<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>3数据预处理和特征工程</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
[dir="rtl"] #ipython_notebook {
  float: right !important;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
[dir="rtl"] #tabs li {
  float: right;
}
ul#tabs {
  margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
  margin-right: 0px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
  padding-top: 1px;
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
  float: right !important;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
  float: right;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
[dir="rtl"] #new-menu {
  text-align: right;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
  float: right !important;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="sklearn&#24403;&#20013;&#29305;&#24449;&#30697;&#38453;&#24517;&#39035;&#26159;&#20108;&#32500;">sklearn&#24403;&#20013;&#29305;&#24449;&#30697;&#38453;&#24517;&#39035;&#26159;&#20108;&#32500;<a class="anchor-link" href="#sklearn&#24403;&#20013;&#29305;&#24449;&#30697;&#38453;&#24517;&#39035;&#26159;&#20108;&#32500;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#25968;&#25454;&#39044;&#22788;&#29702;">&#25968;&#25454;&#39044;&#22788;&#29702;<a class="anchor-link" href="#&#25968;&#25454;&#39044;&#22788;&#29702;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="1&#25968;&#25454;&#26080;&#37327;&#32434;&#21270;">1&#25968;&#25454;&#26080;&#37327;&#32434;&#21270;<a class="anchor-link" href="#1&#25968;&#25454;&#26080;&#37327;&#32434;&#21270;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="preprocessing.MinMaxScaler">preprocessing.MinMaxScaler<a class="anchor-link" href="#preprocessing.MinMaxScaler">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[1]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">MinMaxScaler</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">6</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">18</span><span class="p">]]</span>
<span class="c1">#不太熟悉numpy的小伙伴，能够判断data的结构吗？</span>
<span class="c1">#如果换成表是什么样子？</span>
<span class="n">data</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[1]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[[-1, 2], [-0.5, 6], [0, 10], [1, 18]]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>1</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>-1.0</td>
      <td>2</td>
    </tr>
    <tr>
      <th>1</th>
      <td>-0.5</td>
      <td>6</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0.0</td>
      <td>10</td>
    </tr>
    <tr>
      <th>3</th>
      <td>1.0</td>
      <td>18</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#实现归一化</span>
<span class="n">scaler</span> <span class="o">=</span> <span class="n">MinMaxScaler</span><span class="p">()</span> <span class="c1">#实例化</span>
<span class="n">scaler</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#fit，在这里本质是生成min(x)和max(x)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#通过接口导出结果</span>
<span class="n">result</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[2]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0.  , 0.  ],
       [0.25, 0.25],
       [0.5 , 0.5 ],
       [1.  , 1.  ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">result_</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#训练和导出结果一步达成</span>
<span class="n">scaler</span><span class="o">.</span><span class="n">inverse_transform</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="c1">#将归一化后的结果逆转</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[3]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[4]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#使用MinMaxScaler的参数feature_range实现将数据归一化到[0,1]以外的范围中</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">6</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">18</span><span class="p">]]</span>
<span class="n">scaler</span> <span class="o">=</span> <span class="n">MinMaxScaler</span><span class="p">(</span><span class="n">feature_range</span><span class="o">=</span><span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">])</span> <span class="c1">#依然实例化 将数据归一化到[5,10]</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#fit_transform一步导出结果</span>
<span class="n">result</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[4]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[ 5.  ,  5.  ],
       [ 6.25,  6.25],
       [ 7.5 ,  7.5 ],
       [10.  , 10.  ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#当X中的特征数量非常多的时候，fit会报错并表示，数据量太大了我计算不了</span>
<span class="c1">#此时使用partial_fit作为训练接口</span>
<span class="n">scaler</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">partial_fit</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="n">scaler</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>MinMaxScaler(copy=True, feature_range=[5, 10])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#20351;&#29992;numpy&#26469;&#23454;&#29616;&#24402;&#19968;&#21270;">&#20351;&#29992;numpy&#26469;&#23454;&#29616;&#24402;&#19968;&#21270;<a class="anchor-link" href="#&#20351;&#29992;numpy&#26469;&#23454;&#29616;&#24402;&#19968;&#21270;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[7]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([-1.,  2.])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[8]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[8]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ 1., 18.])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">6</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">18</span><span class="p">]])</span>
<span class="c1">#归一化</span>
<span class="n">X_nor</span> <span class="o">=</span> <span class="p">(</span><span class="n">X</span> <span class="o">-</span> <span class="n">X</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span> <span class="o">/</span> <span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="o">-</span> <span class="n">X</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span>
<span class="c1"># 对每一列数据求最小值</span>
<span class="n">X_nor</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[9]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0.  , 0.  ],
       [0.25, 0.25],
       [0.5 , 0.5 ],
       [1.  , 1.  ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[10]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#逆转归一化</span>
<span class="n">X_returned</span> <span class="o">=</span> <span class="n">X_nor</span> <span class="o">*</span> <span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="o">-</span> <span class="n">X</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span> <span class="o">+</span> <span class="n">X</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">X_returned</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[10]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="preprocessing.StandardScaler">preprocessing.StandardScaler<a class="anchor-link" href="#preprocessing.StandardScaler">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[11]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">StandardScaler</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">6</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">18</span><span class="p">]]</span>
<span class="n">stdscaler</span> <span class="o">=</span> <span class="n">StandardScaler</span><span class="p">()</span> <span class="c1">#实例化</span>
<span class="n">stdscaler</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#fit，本质是生成均值和方差</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[11]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>StandardScaler(copy=True, with_mean=True, with_std=True)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[13]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">stdscaler</span><span class="o">.</span><span class="n">mean_</span> <span class="c1">#查看均值的属性mean_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[13]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([-0.125,  9.   ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[14]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">stdscaler</span><span class="o">.</span><span class="n">var_</span> <span class="c1">#查看方差的属性var_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[14]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ 0.546875, 35.      ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># stdscaler.std_ </span>
<span class="c1"># AttributeError: &#39;StandardScaler&#39; object has no attribute &#39;std_&#39;</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[19]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">x_std</span> <span class="o">=</span> <span class="n">stdscaler</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#通过接口导出结果</span>
<span class="n">x_std</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[19]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1.18321596, -1.18321596],
       [-0.50709255, -0.50709255],
       [ 0.16903085,  0.16903085],
       [ 1.52127766,  1.52127766]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[20]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">x_std</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> <span class="c1">#导出的结果是一个数组，用mean()查看均值</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[20]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[21]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">x_std</span><span class="o">.</span><span class="n">std</span><span class="p">()</span> <span class="c1">#用std()查看方差</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[21]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>1.0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[22]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">stdscaler</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1">#使用fit_transform(data)一步达成结果</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[22]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1.18321596, -1.18321596],
       [-0.50709255, -0.50709255],
       [ 0.16903085,  0.16903085],
       [ 1.52127766,  1.52127766]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[23]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">stdscaler</span><span class="o">.</span><span class="n">inverse_transform</span><span class="p">(</span><span class="n">x_std</span><span class="p">)</span> <span class="c1">#使用inverse_transform逆转标准化</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[23]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="numpy&#23454;&#29616;std">numpy&#23454;&#29616;std<a class="anchor-link" href="#numpy&#23454;&#29616;std">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[26]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[26]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[29]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_mean</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">X_mean</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[29]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([-0.125,  9.   ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[31]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_std</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">X_std</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[31]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0.73950997, 5.91607978])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[32]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xs</span> <span class="o">=</span> <span class="p">(</span><span class="n">X</span><span class="o">-</span><span class="n">X_mean</span><span class="p">)</span><span class="o">/</span><span class="n">X_std</span>
<span class="n">Xs</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[32]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1.18321596, -1.18321596],
       [-0.50709255, -0.50709255],
       [ 0.16903085,  0.16903085],
       [ 1.52127766,  1.52127766]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[34]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xs</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">axis</span> <span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[34]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0., 0.])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[36]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xs</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[36]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([1., 1.])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[48]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xs</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[48]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0., 0., 0., 0.])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="preprocessing.scale">preprocessing.scale<a class="anchor-link" href="#preprocessing.scale">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>使用sklearn.preprocessing.scale()函数，可以直接将给定数据进行标准化，但不能保存参数，即不能对测试集进行转换</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[25]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn</span> <span class="k">import</span> <span class="n">preprocessing</span>
<span class="n">preprocessing</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="c1">#axis =0 . 如果为0，则独立标准化每个特征，否则（如果1）标准化每个样本</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[25]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[-1.18321596, -1.18321596],
       [-0.50709255, -0.50709255],
       [ 0.16903085,  0.16903085],
       [ 1.52127766,  1.52127766]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="2&#32570;&#22833;&#20540;">2&#32570;&#22833;&#20540;<a class="anchor-link" href="#2&#32570;&#22833;&#20540;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">&quot;./Narrativedata.csv&quot;</span><span class="p">,</span><span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="impute.SimpleImputer">impute.SimpleImputer<a class="anchor-link" href="#impute.SimpleImputer">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
Int64Index: 891 entries, 0 to 890
Data columns (total 4 columns):
Age         714 non-null float64
Sex         891 non-null object
Embarked    889 non-null object
Survived    891 non-null object
dtypes: float64(1), object(3)
memory usage: 34.8+ KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#填补年龄</span>
<span class="n">Age</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="c1">#sklearn当中特征矩阵必须是二维</span>
<span class="n">Age</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[22.],
       [38.],
       [26.],
       [35.],
       [35.],
       [nan],
       [54.],
       [ 2.],
       [27.],
       [14.],
       [ 4.],
       [58.],
       [20.],
       [39.],
       [14.],
       [55.],
       [ 2.],
       [nan],
       [31.],
       [nan]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.impute</span> <span class="k">import</span> <span class="n">SimpleImputer</span>
<span class="n">imp_mean</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">()</span> <span class="c1">#实例化，默认均值填补</span>
<span class="n">imp_median</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">strategy</span><span class="o">=</span><span class="s2">&quot;median&quot;</span><span class="p">)</span> <span class="c1">#用中位数填补</span>
<span class="n">imp_0</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">strategy</span><span class="o">=</span><span class="s2">&quot;constant&quot;</span><span class="p">,</span><span class="n">fill_value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1">#用0填补</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">imp_0</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>SimpleImputer(copy=True, fill_value=0, missing_values=nan,
       strategy=&#39;constant&#39;, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">imp_mean</span> <span class="o">=</span> <span class="n">imp_mean</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">Age</span><span class="p">)</span> <span class="c1">#fit_transform一步完成调取结果</span>
<span class="n">imp_median</span> <span class="o">=</span> <span class="n">imp_median</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">Age</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">imp_0</span> <span class="o">=</span> <span class="n">imp_0</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">Age</span><span class="p">)</span>
<span class="n">imp_0</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[22.  ],
       [38.  ],
       [26.  ],
       [35.  ],
       [35.  ],
       [ 0.  ],
       [54.  ],
       [ 2.  ],
       [27.  ],
       [14.  ],
       [ 4.  ],
       [58.  ],
       [20.  ],
       [39.  ],
       [14.  ],
       [55.  ],
       [ 2.  ],
       [ 0.  ],
       [31.  ],
       [ 0.  ],
       [35.  ],
       [34.  ],
       [15.  ],
       [28.  ],
       [ 8.  ],
       [38.  ],
       [ 0.  ],
       [19.  ],
       [ 0.  ],
       [ 0.  ],
       [40.  ],
       [ 0.  ],
       [ 0.  ],
       [66.  ],
       [28.  ],
       [42.  ],
       [ 0.  ],
       [21.  ],
       [18.  ],
       [14.  ],
       [40.  ],
       [27.  ],
       [ 0.  ],
       [ 3.  ],
       [19.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.  ],
       [18.  ],
       [ 7.  ],
       [21.  ],
       [49.  ],
       [29.  ],
       [65.  ],
       [ 0.  ],
       [21.  ],
       [28.5 ],
       [ 5.  ],
       [11.  ],
       [22.  ],
       [38.  ],
       [45.  ],
       [ 4.  ],
       [ 0.  ],
       [ 0.  ],
       [29.  ],
       [19.  ],
       [17.  ],
       [26.  ],
       [32.  ],
       [16.  ],
       [21.  ],
       [26.  ],
       [32.  ],
       [25.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.83],
       [30.  ],
       [22.  ],
       [29.  ],
       [ 0.  ],
       [28.  ],
       [17.  ],
       [33.  ],
       [16.  ],
       [ 0.  ],
       [23.  ],
       [24.  ],
       [29.  ],
       [20.  ],
       [46.  ],
       [26.  ],
       [59.  ],
       [ 0.  ],
       [71.  ],
       [23.  ],
       [34.  ],
       [34.  ],
       [28.  ],
       [ 0.  ],
       [21.  ],
       [33.  ],
       [37.  ],
       [28.  ],
       [21.  ],
       [ 0.  ],
       [38.  ],
       [ 0.  ],
       [47.  ],
       [14.5 ],
       [22.  ],
       [20.  ],
       [17.  ],
       [21.  ],
       [70.5 ],
       [29.  ],
       [24.  ],
       [ 2.  ],
       [21.  ],
       [ 0.  ],
       [32.5 ],
       [32.5 ],
       [54.  ],
       [12.  ],
       [ 0.  ],
       [24.  ],
       [ 0.  ],
       [45.  ],
       [33.  ],
       [20.  ],
       [47.  ],
       [29.  ],
       [25.  ],
       [23.  ],
       [19.  ],
       [37.  ],
       [16.  ],
       [24.  ],
       [ 0.  ],
       [22.  ],
       [24.  ],
       [19.  ],
       [18.  ],
       [19.  ],
       [27.  ],
       [ 9.  ],
       [36.5 ],
       [42.  ],
       [51.  ],
       [22.  ],
       [55.5 ],
       [40.5 ],
       [ 0.  ],
       [51.  ],
       [16.  ],
       [30.  ],
       [ 0.  ],
       [ 0.  ],
       [44.  ],
       [40.  ],
       [26.  ],
       [17.  ],
       [ 1.  ],
       [ 9.  ],
       [ 0.  ],
       [45.  ],
       [ 0.  ],
       [28.  ],
       [61.  ],
       [ 4.  ],
       [ 1.  ],
       [21.  ],
       [56.  ],
       [18.  ],
       [ 0.  ],
       [50.  ],
       [30.  ],
       [36.  ],
       [ 0.  ],
       [ 0.  ],
       [ 9.  ],
       [ 1.  ],
       [ 4.  ],
       [ 0.  ],
       [ 0.  ],
       [45.  ],
       [40.  ],
       [36.  ],
       [32.  ],
       [19.  ],
       [19.  ],
       [ 3.  ],
       [44.  ],
       [58.  ],
       [ 0.  ],
       [42.  ],
       [ 0.  ],
       [24.  ],
       [28.  ],
       [ 0.  ],
       [34.  ],
       [45.5 ],
       [18.  ],
       [ 2.  ],
       [32.  ],
       [26.  ],
       [16.  ],
       [40.  ],
       [24.  ],
       [35.  ],
       [22.  ],
       [30.  ],
       [ 0.  ],
       [31.  ],
       [27.  ],
       [42.  ],
       [32.  ],
       [30.  ],
       [16.  ],
       [27.  ],
       [51.  ],
       [ 0.  ],
       [38.  ],
       [22.  ],
       [19.  ],
       [20.5 ],
       [18.  ],
       [ 0.  ],
       [35.  ],
       [29.  ],
       [59.  ],
       [ 5.  ],
       [24.  ],
       [ 0.  ],
       [44.  ],
       [ 8.  ],
       [19.  ],
       [33.  ],
       [ 0.  ],
       [ 0.  ],
       [29.  ],
       [22.  ],
       [30.  ],
       [44.  ],
       [25.  ],
       [24.  ],
       [37.  ],
       [54.  ],
       [ 0.  ],
       [29.  ],
       [62.  ],
       [30.  ],
       [41.  ],
       [29.  ],
       [ 0.  ],
       [30.  ],
       [35.  ],
       [50.  ],
       [ 0.  ],
       [ 3.  ],
       [52.  ],
       [40.  ],
       [ 0.  ],
       [36.  ],
       [16.  ],
       [25.  ],
       [58.  ],
       [35.  ],
       [ 0.  ],
       [25.  ],
       [41.  ],
       [37.  ],
       [ 0.  ],
       [63.  ],
       [45.  ],
       [ 0.  ],
       [ 7.  ],
       [35.  ],
       [65.  ],
       [28.  ],
       [16.  ],
       [19.  ],
       [ 0.  ],
       [33.  ],
       [30.  ],
       [22.  ],
       [42.  ],
       [22.  ],
       [26.  ],
       [19.  ],
       [36.  ],
       [24.  ],
       [24.  ],
       [ 0.  ],
       [23.5 ],
       [ 2.  ],
       [ 0.  ],
       [50.  ],
       [ 0.  ],
       [ 0.  ],
       [19.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.92],
       [ 0.  ],
       [17.  ],
       [30.  ],
       [30.  ],
       [24.  ],
       [18.  ],
       [26.  ],
       [28.  ],
       [43.  ],
       [26.  ],
       [24.  ],
       [54.  ],
       [31.  ],
       [40.  ],
       [22.  ],
       [27.  ],
       [30.  ],
       [22.  ],
       [ 0.  ],
       [36.  ],
       [61.  ],
       [36.  ],
       [31.  ],
       [16.  ],
       [ 0.  ],
       [45.5 ],
       [38.  ],
       [16.  ],
       [ 0.  ],
       [ 0.  ],
       [29.  ],
       [41.  ],
       [45.  ],
       [45.  ],
       [ 2.  ],
       [24.  ],
       [28.  ],
       [25.  ],
       [36.  ],
       [24.  ],
       [40.  ],
       [ 0.  ],
       [ 3.  ],
       [42.  ],
       [23.  ],
       [ 0.  ],
       [15.  ],
       [25.  ],
       [ 0.  ],
       [28.  ],
       [22.  ],
       [38.  ],
       [ 0.  ],
       [ 0.  ],
       [40.  ],
       [29.  ],
       [45.  ],
       [35.  ],
       [ 0.  ],
       [30.  ],
       [60.  ],
       [ 0.  ],
       [ 0.  ],
       [24.  ],
       [25.  ],
       [18.  ],
       [19.  ],
       [22.  ],
       [ 3.  ],
       [ 0.  ],
       [22.  ],
       [27.  ],
       [20.  ],
       [19.  ],
       [42.  ],
       [ 1.  ],
       [32.  ],
       [35.  ],
       [ 0.  ],
       [18.  ],
       [ 1.  ],
       [36.  ],
       [ 0.  ],
       [17.  ],
       [36.  ],
       [21.  ],
       [28.  ],
       [23.  ],
       [24.  ],
       [22.  ],
       [31.  ],
       [46.  ],
       [23.  ],
       [28.  ],
       [39.  ],
       [26.  ],
       [21.  ],
       [28.  ],
       [20.  ],
       [34.  ],
       [51.  ],
       [ 3.  ],
       [21.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.  ],
       [33.  ],
       [ 0.  ],
       [44.  ],
       [ 0.  ],
       [34.  ],
       [18.  ],
       [30.  ],
       [10.  ],
       [ 0.  ],
       [21.  ],
       [29.  ],
       [28.  ],
       [18.  ],
       [ 0.  ],
       [28.  ],
       [19.  ],
       [ 0.  ],
       [32.  ],
       [28.  ],
       [ 0.  ],
       [42.  ],
       [17.  ],
       [50.  ],
       [14.  ],
       [21.  ],
       [24.  ],
       [64.  ],
       [31.  ],
       [45.  ],
       [20.  ],
       [25.  ],
       [28.  ],
       [ 0.  ],
       [ 4.  ],
       [13.  ],
       [34.  ],
       [ 5.  ],
       [52.  ],
       [36.  ],
       [ 0.  ],
       [30.  ],
       [49.  ],
       [ 0.  ],
       [29.  ],
       [65.  ],
       [ 0.  ],
       [50.  ],
       [ 0.  ],
       [48.  ],
       [34.  ],
       [47.  ],
       [48.  ],
       [ 0.  ],
       [38.  ],
       [ 0.  ],
       [56.  ],
       [ 0.  ],
       [ 0.75],
       [ 0.  ],
       [38.  ],
       [33.  ],
       [23.  ],
       [22.  ],
       [ 0.  ],
       [34.  ],
       [29.  ],
       [22.  ],
       [ 2.  ],
       [ 9.  ],
       [ 0.  ],
       [50.  ],
       [63.  ],
       [25.  ],
       [ 0.  ],
       [35.  ],
       [58.  ],
       [30.  ],
       [ 9.  ],
       [ 0.  ],
       [21.  ],
       [55.  ],
       [71.  ],
       [21.  ],
       [ 0.  ],
       [54.  ],
       [ 0.  ],
       [25.  ],
       [24.  ],
       [17.  ],
       [21.  ],
       [ 0.  ],
       [37.  ],
       [16.  ],
       [18.  ],
       [33.  ],
       [ 0.  ],
       [28.  ],
       [26.  ],
       [29.  ],
       [ 0.  ],
       [36.  ],
       [54.  ],
       [24.  ],
       [47.  ],
       [34.  ],
       [ 0.  ],
       [36.  ],
       [32.  ],
       [30.  ],
       [22.  ],
       [ 0.  ],
       [44.  ],
       [ 0.  ],
       [40.5 ],
       [50.  ],
       [ 0.  ],
       [39.  ],
       [23.  ],
       [ 2.  ],
       [ 0.  ],
       [17.  ],
       [ 0.  ],
       [30.  ],
       [ 7.  ],
       [45.  ],
       [30.  ],
       [ 0.  ],
       [22.  ],
       [36.  ],
       [ 9.  ],
       [11.  ],
       [32.  ],
       [50.  ],
       [64.  ],
       [19.  ],
       [ 0.  ],
       [33.  ],
       [ 8.  ],
       [17.  ],
       [27.  ],
       [ 0.  ],
       [22.  ],
       [22.  ],
       [62.  ],
       [48.  ],
       [ 0.  ],
       [39.  ],
       [36.  ],
       [ 0.  ],
       [40.  ],
       [28.  ],
       [ 0.  ],
       [ 0.  ],
       [24.  ],
       [19.  ],
       [29.  ],
       [ 0.  ],
       [32.  ],
       [62.  ],
       [53.  ],
       [36.  ],
       [ 0.  ],
       [16.  ],
       [19.  ],
       [34.  ],
       [39.  ],
       [ 0.  ],
       [32.  ],
       [25.  ],
       [39.  ],
       [54.  ],
       [36.  ],
       [ 0.  ],
       [18.  ],
       [47.  ],
       [60.  ],
       [22.  ],
       [ 0.  ],
       [35.  ],
       [52.  ],
       [47.  ],
       [ 0.  ],
       [37.  ],
       [36.  ],
       [ 0.  ],
       [49.  ],
       [ 0.  ],
       [49.  ],
       [24.  ],
       [ 0.  ],
       [ 0.  ],
       [44.  ],
       [35.  ],
       [36.  ],
       [30.  ],
       [27.  ],
       [22.  ],
       [40.  ],
       [39.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.  ],
       [35.  ],
       [24.  ],
       [34.  ],
       [26.  ],
       [ 4.  ],
       [26.  ],
       [27.  ],
       [42.  ],
       [20.  ],
       [21.  ],
       [21.  ],
       [61.  ],
       [57.  ],
       [21.  ],
       [26.  ],
       [ 0.  ],
       [80.  ],
       [51.  ],
       [32.  ],
       [ 0.  ],
       [ 9.  ],
       [28.  ],
       [32.  ],
       [31.  ],
       [41.  ],
       [ 0.  ],
       [20.  ],
       [24.  ],
       [ 2.  ],
       [ 0.  ],
       [ 0.75],
       [48.  ],
       [19.  ],
       [56.  ],
       [ 0.  ],
       [23.  ],
       [ 0.  ],
       [18.  ],
       [21.  ],
       [ 0.  ],
       [18.  ],
       [24.  ],
       [ 0.  ],
       [32.  ],
       [23.  ],
       [58.  ],
       [50.  ],
       [40.  ],
       [47.  ],
       [36.  ],
       [20.  ],
       [32.  ],
       [25.  ],
       [ 0.  ],
       [43.  ],
       [ 0.  ],
       [40.  ],
       [31.  ],
       [70.  ],
       [31.  ],
       [ 0.  ],
       [18.  ],
       [24.5 ],
       [18.  ],
       [43.  ],
       [36.  ],
       [ 0.  ],
       [27.  ],
       [20.  ],
       [14.  ],
       [60.  ],
       [25.  ],
       [14.  ],
       [19.  ],
       [18.  ],
       [15.  ],
       [31.  ],
       [ 4.  ],
       [ 0.  ],
       [25.  ],
       [60.  ],
       [52.  ],
       [44.  ],
       [ 0.  ],
       [49.  ],
       [42.  ],
       [18.  ],
       [35.  ],
       [18.  ],
       [25.  ],
       [26.  ],
       [39.  ],
       [45.  ],
       [42.  ],
       [22.  ],
       [ 0.  ],
       [24.  ],
       [ 0.  ],
       [48.  ],
       [29.  ],
       [52.  ],
       [19.  ],
       [38.  ],
       [27.  ],
       [ 0.  ],
       [33.  ],
       [ 6.  ],
       [17.  ],
       [34.  ],
       [50.  ],
       [27.  ],
       [20.  ],
       [30.  ],
       [ 0.  ],
       [25.  ],
       [25.  ],
       [29.  ],
       [11.  ],
       [ 0.  ],
       [23.  ],
       [23.  ],
       [28.5 ],
       [48.  ],
       [35.  ],
       [ 0.  ],
       [ 0.  ],
       [ 0.  ],
       [36.  ],
       [21.  ],
       [24.  ],
       [31.  ],
       [70.  ],
       [16.  ],
       [30.  ],
       [19.  ],
       [31.  ],
       [ 4.  ],
       [ 6.  ],
       [33.  ],
       [23.  ],
       [48.  ],
       [ 0.67],
       [28.  ],
       [18.  ],
       [34.  ],
       [33.  ],
       [ 0.  ],
       [41.  ],
       [20.  ],
       [36.  ],
       [16.  ],
       [51.  ],
       [ 0.  ],
       [30.5 ],
       [ 0.  ],
       [32.  ],
       [24.  ],
       [48.  ],
       [57.  ],
       [ 0.  ],
       [54.  ],
       [18.  ],
       [ 0.  ],
       [ 5.  ],
       [ 0.  ],
       [43.  ],
       [13.  ],
       [17.  ],
       [29.  ],
       [ 0.  ],
       [25.  ],
       [25.  ],
       [18.  ],
       [ 8.  ],
       [ 1.  ],
       [46.  ],
       [ 0.  ],
       [16.  ],
       [ 0.  ],
       [ 0.  ],
       [25.  ],
       [39.  ],
       [49.  ],
       [31.  ],
       [30.  ],
       [30.  ],
       [34.  ],
       [31.  ],
       [11.  ],
       [ 0.42],
       [27.  ],
       [31.  ],
       [39.  ],
       [18.  ],
       [39.  ],
       [33.  ],
       [26.  ],
       [39.  ],
       [35.  ],
       [ 6.  ],
       [30.5 ],
       [ 0.  ],
       [23.  ],
       [31.  ],
       [43.  ],
       [10.  ],
       [52.  ],
       [27.  ],
       [38.  ],
       [27.  ],
       [ 2.  ],
       [ 0.  ],
       [ 0.  ],
       [ 1.  ],
       [ 0.  ],
       [62.  ],
       [15.  ],
       [ 0.83],
       [ 0.  ],
       [23.  ],
       [18.  ],
       [39.  ],
       [21.  ],
       [ 0.  ],
       [32.  ],
       [ 0.  ],
       [20.  ],
       [16.  ],
       [30.  ],
       [34.5 ],
       [17.  ],
       [42.  ],
       [ 0.  ],
       [35.  ],
       [28.  ],
       [ 0.  ],
       [ 4.  ],
       [74.  ],
       [ 9.  ],
       [16.  ],
       [44.  ],
       [18.  ],
       [45.  ],
       [51.  ],
       [24.  ],
       [ 0.  ],
       [41.  ],
       [21.  ],
       [48.  ],
       [ 0.  ],
       [24.  ],
       [42.  ],
       [27.  ],
       [31.  ],
       [ 0.  ],
       [ 4.  ],
       [26.  ],
       [47.  ],
       [33.  ],
       [47.  ],
       [28.  ],
       [15.  ],
       [20.  ],
       [19.  ],
       [ 0.  ],
       [56.  ],
       [25.  ],
       [33.  ],
       [22.  ],
       [28.  ],
       [25.  ],
       [39.  ],
       [27.  ],
       [19.  ],
       [ 0.  ],
       [26.  ],
       [32.  ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">imp_mean</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[22.        ],
       [38.        ],
       [26.        ],
       [35.        ],
       [35.        ],
       [29.69911765],
       [54.        ],
       [ 2.        ],
       [27.        ],
       [14.        ],
       [ 4.        ],
       [58.        ],
       [20.        ],
       [39.        ],
       [14.        ],
       [55.        ],
       [ 2.        ],
       [29.69911765],
       [31.        ],
       [29.69911765]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">imp_median</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[22.],
       [38.],
       [26.],
       [35.],
       [35.],
       [28.],
       [54.],
       [ 2.],
       [27.],
       [14.],
       [ 4.],
       [58.],
       [20.],
       [39.],
       [14.],
       [55.],
       [ 2.],
       [28.],
       [31.],
       [28.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">imp_0</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[22.],
       [38.],
       [26.],
       [35.],
       [35.],
       [ 0.],
       [54.],
       [ 2.],
       [27.],
       [14.],
       [ 4.],
       [58.],
       [20.],
       [39.],
       [14.],
       [55.],
       [ 2.],
       [ 0.],
       [31.],
       [ 0.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#在这里我们使用中位数填补Age</span>
<span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">imp_median</span>
<span class="n">data</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
Int64Index: 891 entries, 0 to 890
Data columns (total 4 columns):
Age         891 non-null float64
Sex         891 non-null object
Embarked    889 non-null object
Survived    891 non-null object
dtypes: float64(1), object(3)
memory usage: 34.8+ KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#使用众数填补Embarked</span>
<span class="n">Embarked</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Embarked&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="n">imp_mode</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">strategy</span> <span class="o">=</span> <span class="s2">&quot;most_frequent&quot;</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Embarked&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">imp_mode</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">Embarked</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
Int64Index: 891 entries, 0 to 890
Data columns (total 4 columns):
Age         891 non-null float64
Sex         891 non-null object
Embarked    891 non-null object
Survived    891 non-null object
dtypes: float64(1), object(3)
memory usage: 34.8+ KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#29992;Pandas&#21644;Numpy&#36827;&#34892;&#22635;&#34917;&#20854;&#23454;&#26356;&#21152;&#31616;&#21333;">&#29992;Pandas&#21644;Numpy&#36827;&#34892;&#22635;&#34917;&#20854;&#23454;&#26356;&#21152;&#31616;&#21333;<a class="anchor-link" href="#&#29992;Pandas&#21644;Numpy&#36827;&#34892;&#22635;&#34917;&#20854;&#23454;&#26356;&#21152;&#31616;&#21333;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;Narrativedata.csv&quot;</span><span class="p">,</span><span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">median</span><span class="p">())</span>
<span class="c1">#.fillna 在DataFrame里面直接进行填补</span>
<span class="n">data</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#.dropna(axis=0)删除所有有缺失值的行，.dropna(axis=1)删除所有有缺失值的列</span>
<span class="c1">#参数inplace，为True表示在原数据集上进行修改，为False表示生成一个复制对象，不修改原数据，默认False</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
Int64Index: 889 entries, 0 to 890
Data columns (total 4 columns):
Age         889 non-null float64
Sex         889 non-null object
Embarked    889 non-null object
Survived    889 non-null object
dtypes: float64(1), object(3)
memory usage: 34.7+ KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="3&#22788;&#29702;&#20998;&#31867;&#22411;&#29305;&#24449;&#65306;&#32534;&#30721;&#19982;&#21713;&#21464;&#37327;">3&#22788;&#29702;&#20998;&#31867;&#22411;&#29305;&#24449;&#65306;&#32534;&#30721;&#19982;&#21713;&#21464;&#37327;<a class="anchor-link" href="#3&#22788;&#29702;&#20998;&#31867;&#22411;&#29305;&#24449;&#65306;&#32534;&#30721;&#19982;&#21713;&#21464;&#37327;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="LabelEncoder&#26631;&#31614;&#19987;&#29992;">LabelEncoder&#26631;&#31614;&#19987;&#29992;<a class="anchor-link" href="#LabelEncoder&#26631;&#31614;&#19987;&#29992;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">LabelEncoder</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1">#要输入的是标签，不是特征矩阵，所以允许一维</span>
<span class="n">le</span> <span class="o">=</span> <span class="n">LabelEncoder</span><span class="p">()</span> <span class="c1">#实例化</span>
<span class="n">le</span> <span class="o">=</span> <span class="n">le</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="c1">#导入数据</span>
<span class="n">label</span> <span class="o">=</span> <span class="n">le</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="c1">#transform接口调取结果</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">le</span><span class="o">.</span><span class="n">classes_</span> <span class="c1">#属性.classes_查看标签中究竟有多少类别</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([&#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;], dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">label</span> <span class="c1">#查看获取的结果label</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 1, 2, 0, 0, 0, 1, 0, 2, 0, 2, 1, 2,
       2, 2, 0, 1, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 1,
       2, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2,
       0, 2, 0, 0, 0, 0, 0, 2, 1, 0, 1, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 2,
       0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 0, 1, 0, 0,
       2, 0, 0, 2, 0, 0, 0, 1, 1, 2, 0, 0, 0, 2, 0, 0, 1, 0, 1, 1, 0, 0,
       0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1,
       0, 0, 0, 0, 0, 0, 1, 2, 0, 2, 2, 0, 0, 2, 0, 2, 1, 2, 2, 0, 0, 1,
       0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 1, 2, 1, 0, 0, 2, 2, 0, 2, 0, 2,
       0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0,
       0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 0,
       0, 1, 2, 2, 1, 0, 2, 2, 0, 2, 2, 0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 2,
       0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 2, 0, 2, 2, 2, 0,
       2, 2, 2, 0, 0, 0, 2, 2, 1, 2, 2, 0, 1, 2, 2, 0, 2, 0, 1, 2, 2, 2,
       0, 1, 0, 2, 0, 0, 2, 1, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0,
       0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 1, 2, 0, 0, 0, 0,
       2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0,
       0, 0, 2, 2, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 1, 2, 0,
       0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2,
       0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 1, 2, 0, 2, 2, 0, 2, 1, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 0, 1, 0, 0, 2, 0, 0, 0, 2, 2,
       1, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 2, 1, 2,
       2, 1, 2, 2, 0, 2, 2, 1, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0,
       0, 2, 0, 1, 2, 0, 2, 0, 2, 0, 2, 2, 0, 1, 2, 0, 0, 2, 2, 1, 2, 2,
       0, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 2, 2, 1,
       2, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 0, 2, 1, 0, 0, 2, 0, 0, 0,
       0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 1, 2, 2, 1, 0, 0, 2, 0, 0, 1, 0,
       0, 2, 0, 0, 2, 2, 0, 0, 0, 1, 2, 1, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0,
       0, 0, 2, 0, 2, 2, 2, 1, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 1,
       0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0, 2, 0,
       0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 2, 0, 0, 2, 2, 0, 0, 0,
       0, 1, 2, 2, 2, 2, 0, 1, 0, 1, 1, 2, 1, 0, 0, 2, 0, 0, 0, 2, 0, 2,
       2, 1, 1, 2, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0,
       0, 2, 2, 1, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0,
       1, 0, 0, 1, 1, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0,
       0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0,
       0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0,
       2, 2, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 2, 0, 2, 2, 2, 2, 0,
       0, 0, 2, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0,
       0, 1, 0, 0, 0, 2, 0, 1, 0])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">le</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="c1">#也可以直接fit_transform一步到位</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 1, 2, 0, 0, 0, 1, 0, 2, 0, 2, 1, 2,
       2, 2, 0, 1, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 1,
       2, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2,
       0, 2, 0, 0, 0, 0, 0, 2, 1, 0, 1, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 2,
       0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 0, 1, 0, 0,
       2, 0, 0, 2, 0, 0, 0, 1, 1, 2, 0, 0, 0, 2, 0, 0, 1, 0, 1, 1, 0, 0,
       0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1,
       0, 0, 0, 0, 0, 0, 1, 2, 0, 2, 2, 0, 0, 2, 0, 2, 1, 2, 2, 0, 0, 1,
       0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 1, 2, 1, 0, 0, 2, 2, 0, 2, 0, 2,
       0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0,
       0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 0,
       0, 1, 2, 2, 1, 0, 2, 2, 0, 2, 2, 0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 2,
       0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 2, 0, 2, 2, 2, 0,
       2, 2, 2, 0, 0, 0, 2, 2, 1, 2, 2, 0, 1, 2, 2, 0, 2, 0, 1, 2, 2, 2,
       0, 1, 0, 2, 0, 0, 2, 1, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0,
       0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 1, 2, 0, 0, 0, 0,
       2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0,
       0, 0, 2, 2, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 1, 2, 0,
       0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2,
       0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 1, 2, 0, 2, 2, 0, 2, 1, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 0, 1, 0, 0, 2, 0, 0, 0, 2, 2,
       1, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 2, 1, 2,
       2, 1, 2, 2, 0, 2, 2, 1, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0,
       0, 2, 0, 1, 2, 0, 2, 0, 2, 0, 2, 2, 0, 1, 2, 0, 0, 2, 2, 1, 2, 2,
       0, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 2, 2, 1,
       2, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 0, 2, 1, 0, 0, 2, 0, 0, 0,
       0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 1, 2, 2, 1, 0, 0, 2, 0, 0, 1, 0,
       0, 2, 0, 0, 2, 2, 0, 0, 0, 1, 2, 1, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0,
       0, 0, 2, 0, 2, 2, 2, 1, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 1,
       0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0, 2, 0,
       0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 2, 0, 0, 2, 2, 0, 0, 0,
       0, 1, 2, 2, 2, 2, 0, 1, 0, 1, 1, 2, 1, 0, 0, 2, 0, 0, 0, 2, 0, 2,
       2, 1, 1, 2, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0,
       0, 2, 2, 1, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0,
       1, 0, 0, 1, 1, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0,
       0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0,
       0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0,
       2, 2, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 2, 0, 2, 2, 2, 2, 0,
       0, 0, 2, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0,
       0, 1, 0, 0, 0, 2, 0, 1, 0])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">le</span><span class="o">.</span><span class="n">inverse_transform</span><span class="p">(</span><span class="n">label</span><span class="p">)</span> <span class="c1">#使用inverse_transform可以逆转</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([&#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Unknown&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;,
       &#39;Yes&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Unknown&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;,
       &#39;Yes&#39;, &#39;Yes&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Unknown&#39;, &#39;No&#39;, &#39;No&#39;, &#39;No&#39;, &#39;Yes&#39;, &#39;No&#39;,
       &#39;Unknown&#39;, &#39;No&#39;], dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">label</span> <span class="c1">#让标签等于我们运行出来的结果</span>
<span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>2</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>2</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>2</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#如果不需要教学展示的话我会这么写：</span>
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">LabelEncoder</span>
<span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">LabelEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="preprocessing.OrdinalEncoder&#65306;&#29305;&#24449;&#19987;&#29992;&#65292;&#33021;&#22815;&#23558;&#20998;&#31867;&#29305;&#24449;&#36716;&#25442;&#20026;&#20998;&#31867;&#25968;&#20540;">preprocessing.OrdinalEncoder&#65306;&#29305;&#24449;&#19987;&#29992;&#65292;&#33021;&#22815;&#23558;&#20998;&#31867;&#29305;&#24449;&#36716;&#25442;&#20026;&#20998;&#31867;&#25968;&#20540;<a class="anchor-link" href="#preprocessing.OrdinalEncoder&#65306;&#29305;&#24449;&#19987;&#29992;&#65292;&#33021;&#22815;&#23558;&#20998;&#31867;&#29305;&#24449;&#36716;&#25442;&#20026;&#20998;&#31867;&#25968;&#20540;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">OrdinalEncoder</span>
<span class="c1">#接口categories_对应LabelEncoder的接口classes_，一模一样的功能</span>
<span class="n">data_</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">data_</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>2</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>2</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>2</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">OrdinalEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data_</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:</span><span class="mi">3</span><span class="p">])</span><span class="o">.</span><span class="n">categories_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[array([&#39;female&#39;, &#39;male&#39;], dtype=object), array([&#39;C&#39;, &#39;Q&#39;, &#39;S&#39;], dtype=object)]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data_</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">OrdinalEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">data_</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
<span class="n">data_</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>2</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>0.0</td>
      <td>2.0</td>
      <td>2</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>0.0</td>
      <td>2.0</td>
      <td>2</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="preprocessing.OneHotEncoder&#65306;&#29420;&#28909;&#32534;&#30721;&#65292;&#21019;&#24314;&#21713;&#21464;&#37327;">preprocessing.OneHotEncoder&#65306;&#29420;&#28909;&#32534;&#30721;&#65292;&#21019;&#24314;&#21713;&#21464;&#37327;<a class="anchor-link" href="#preprocessing.OneHotEncoder&#65306;&#29420;&#28909;&#32534;&#30721;&#65292;&#21019;&#24314;&#21713;&#21464;&#37327;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>2</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>2</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>2</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">OneHotEncoder</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="n">enc</span> <span class="o">=</span> <span class="n">OneHotEncoder</span><span class="p">(</span><span class="n">categories</span><span class="o">=</span><span class="s1">&#39;auto&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">enc</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">toarray</span><span class="p">()</span>
<span class="n">result</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0., 1., 0., 0., 1.],
       [1., 0., 1., 0., 0.],
       [1., 0., 0., 0., 1.],
       ...,
       [1., 0., 0., 0., 1.],
       [0., 1., 1., 0., 0.],
       [0., 1., 0., 1., 0.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#依然可以直接一步到位，但为了给大家展示模型属性，所以还是写成了三步</span>
<span class="n">OneHotEncoder</span><span class="p">(</span><span class="n">categories</span><span class="o">=</span><span class="s1">&#39;auto&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">toarray</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0., 1., 0., 0., 1.],
       [1., 0., 1., 0., 0.],
       [1., 0., 0., 0., 1.],
       ...,
       [1., 0., 0., 0., 1.],
       [0., 1., 1., 0., 0.],
       [0., 1., 0., 1., 0.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#依然可以还原</span>
<span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">enc</span><span class="o">.</span><span class="n">inverse_transform</span><span class="p">(</span><span class="n">result</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>1</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>1</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>2</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>3</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>4</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>5</th>
      <td>male</td>
      <td>Q</td>
    </tr>
    <tr>
      <th>6</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>7</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>8</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>9</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>10</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>11</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>12</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>13</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>14</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>15</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>16</th>
      <td>male</td>
      <td>Q</td>
    </tr>
    <tr>
      <th>17</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>18</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>19</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>20</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>21</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>22</th>
      <td>female</td>
      <td>Q</td>
    </tr>
    <tr>
      <th>23</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>24</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>25</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>26</th>
      <td>male</td>
      <td>C</td>
    </tr>
    <tr>
      <th>27</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>28</th>
      <td>female</td>
      <td>Q</td>
    </tr>
    <tr>
      <th>29</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>...</th>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <th>859</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>860</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>861</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>862</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>863</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>864</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>865</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>866</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>867</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>868</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>869</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>870</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>871</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>872</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>873</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>874</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>875</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>876</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>877</th>
      <td>female</td>
      <td>C</td>
    </tr>
    <tr>
      <th>878</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>879</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>880</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>881</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>882</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>883</th>
      <td>female</td>
      <td>Q</td>
    </tr>
    <tr>
      <th>884</th>
      <td>male</td>
      <td>S</td>
    </tr>
    <tr>
      <th>885</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>886</th>
      <td>female</td>
      <td>S</td>
    </tr>
    <tr>
      <th>887</th>
      <td>male</td>
      <td>C</td>
    </tr>
    <tr>
      <th>888</th>
      <td>male</td>
      <td>Q</td>
    </tr>
  </tbody>
</table>
<p>889 rows × 2 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">enc</span><span class="o">.</span><span class="n">get_feature_names</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([&#39;x0_female&#39;, &#39;x0_male&#39;, &#39;x1_C&#39;, &#39;x1_Q&#39;, &#39;x1_S&#39;], dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">result</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0., 1., 0., 0., 1.],
       [1., 0., 1., 0., 0.],
       [1., 0., 0., 0., 1.],
       ...,
       [1., 0., 0., 0., 1.],
       [0., 1., 1., 0., 0.],
       [0., 1., 0., 1., 0.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">result</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(889, 5)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#axis=1,表示跨行进行合并，也就是将量表左右相连，如果是axis=0，就是将量表上下相连</span>
<span class="n">newdata</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">data</span><span class="p">,</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">result</span><span class="p">)],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">newdata</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
      <th>0</th>
      <th>1</th>
      <th>2</th>
      <th>3</th>
      <th>4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">newdata</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="s2">&quot;Sex&quot;</span><span class="p">,</span><span class="s2">&quot;Embarked&quot;</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">newdata</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span><span class="p">[</span><span class="s2">&quot;Age&quot;</span><span class="p">,</span><span class="s2">&quot;Survived&quot;</span><span class="p">,</span><span class="s2">&quot;Female&quot;</span><span class="p">,</span><span class="s2">&quot;Male&quot;</span><span class="p">,</span><span class="s2">&quot;Embarked_C&quot;</span><span class="p">,</span><span class="s2">&quot;Embarked_Q&quot;</span><span class="p">,</span><span class="s2">&quot;Embarked_S&quot;</span><span class="p">]</span>
<span class="n">newdata</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Survived</th>
      <th>Female</th>
      <th>Male</th>
      <th>Embarked_C</th>
      <th>Embarked_Q</th>
      <th>Embarked_S</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="4&#22788;&#29702;&#36830;&#32493;&#22411;&#29305;&#24449;&#65306;&#20108;&#20540;&#21270;&#19982;&#20998;&#27573;">4&#22788;&#29702;&#36830;&#32493;&#22411;&#29305;&#24449;&#65306;&#20108;&#20540;&#21270;&#19982;&#20998;&#27573;<a class="anchor-link" href="#4&#22788;&#29702;&#36830;&#32493;&#22411;&#29305;&#24449;&#65306;&#20108;&#20540;&#21270;&#19982;&#20998;&#27573;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="sklearn.preprocessing.Binarizer">sklearn.preprocessing.Binarizer<a class="anchor-link" href="#sklearn.preprocessing.Binarizer">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将年龄二值化</span>
<span class="n">data_2</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">Binarizer</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">data_2</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="c1">#类为特征专用，所以不能使用一维数组</span>
<span class="n">transformer</span> <span class="o">=</span> <span class="n">Binarizer</span><span class="p">(</span><span class="n">threshold</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="n">transformer</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="preprocessing.KBinsDiscretizer">preprocessing.KBinsDiscretizer<a class="anchor-link" href="#preprocessing.KBinsDiscretizer">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">&quot;./Narrativedata.csv&quot;</span>
                   <span class="p">,</span><span class="n">index_col</span><span class="o">=</span><span class="mi">0</span>
                  <span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">median</span><span class="p">())</span>
<span class="c1">#.fillna 在DataFrame里面直接进行填补</span>
<span class="n">data</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">KBinsDiscretizer</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="n">est</span> <span class="o">=</span> <span class="n">KBinsDiscretizer</span><span class="p">(</span><span class="n">n_bins</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">encode</span><span class="o">=</span><span class="s1">&#39;ordinal&#39;</span><span class="p">,</span> <span class="n">strategy</span><span class="o">=</span><span class="s1">&#39;uniform&#39;</span><span class="p">)</span>
<span class="n">est</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [2.],
       [0.],
       [1.],
       [0.],
       [0.],
       [2.],
       [0.],
       [1.],
       [0.],
       [2.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [2.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [2.],
       [1.],
       [2.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [2.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [2.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [2.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [2.],
       [0.],
       [0.],
       [0.],
       [2.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [2.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [2.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [2.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [2.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [0.],
       [1.],
       [2.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [2.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [2.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [2.],
       [0.],
       [1.],
       [1.],
       [2.],
       [1.],
       [0.],
       [1.],
       [0.],
       [2.],
       [2.],
       [0.],
       [1.],
       [2.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [2.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [2.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [2.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [2.],
       [1.],
       [1.],
       [0.],
       [1.],
       [2.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [2.],
       [2.],
       [0.],
       [0.],
       [1.],
       [2.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [2.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [2.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [2.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [2.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [2.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [2.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [2.],
       [1.],
       [2.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [2.],
       [0.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.],
       [0.],
       [1.],
       [2.],
       [0.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.],
       [1.],
       [0.],
       [1.],
       [0.],
       [1.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#查看转换后分的箱：变成了一列中的三箱</span>
<span class="nb">set</span><span class="p">(</span><span class="n">est</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">ravel</span><span class="p">())</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{0.0, 1.0, 2.0}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">est1</span> <span class="o">=</span> <span class="n">KBinsDiscretizer</span><span class="p">(</span><span class="n">n_bins</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">encode</span><span class="o">=</span><span class="s1">&#39;onehot&#39;</span><span class="p">,</span> <span class="n">strategy</span><span class="o">=</span><span class="s1">&#39;uniform&#39;</span><span class="p">)</span>
<span class="c1">#查看转换后分的箱：变成了哑变量</span>
<span class="n">re1</span> <span class="o">=</span> <span class="n">est1</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">toarray</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">est1</span><span class="o">.</span><span class="n">bin_edges_</span>
<span class="c1"># 每个箱子的边缘</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([array([ 0.42      , 26.94666667, 53.47333333, 80.        ])],
      dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.42</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Age&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>80.0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">newdata</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">data</span><span class="p">,</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">re1</span><span class="p">)],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">newdata</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Age</th>
      <th>Sex</th>
      <th>Embarked</th>
      <th>Survived</th>
      <th>0</th>
      <th>1</th>
      <th>2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>22.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>38.0</td>
      <td>female</td>
      <td>C</td>
      <td>Yes</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>26.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>35.0</td>
      <td>female</td>
      <td>S</td>
      <td>Yes</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>35.0</td>
      <td>male</td>
      <td>S</td>
      <td>No</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">est2</span> <span class="o">=</span> <span class="n">KBinsDiscretizer</span><span class="p">(</span><span class="n">n_bins</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">encode</span><span class="o">=</span><span class="s1">&#39;onehot-dense&#39;</span><span class="p">,</span> <span class="n">strategy</span><span class="o">=</span><span class="s1">&#39;uniform&#39;</span><span class="p">)</span>
<span class="n">est2</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[1., 0., 0.],
       [0., 1., 0.],
       [1., 0., 0.],
       ...,
       [0., 1., 0.],
       [1., 0., 0.],
       [0., 1., 0.]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#29305;&#24449;&#36873;&#25321;-feature_selection">&#29305;&#24449;&#36873;&#25321; feature_selection<a class="anchor-link" href="#&#29305;&#24449;&#36873;&#25321;-feature_selection">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="var">var<a class="anchor-link" href="#var">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>numpy与pandas中的var使用方法不同一样
numpy中，var的axis默认为None，是对所有数据进行求var</p>
<p>dataframe的var的axis默认为0，是对每一列数据进行求var
所以datasam.var(axis=0)==datasam.var()</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="n">datasam</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;./sample_data/mnist_train_small.csv&quot;</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[50]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">datasam</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[50]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>1</th>
      <th>2</th>
      <th>3</th>
      <th>4</th>
      <th>5</th>
      <th>6</th>
      <th>7</th>
      <th>8</th>
      <th>9</th>
      <th>...</th>
      <th>775</th>
      <th>776</th>
      <th>777</th>
      <th>778</th>
      <th>779</th>
      <th>780</th>
      <th>781</th>
      <th>782</th>
      <th>783</th>
      <th>784</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>6</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>5</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>7</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>9</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>5</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 785 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[51]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">datasam</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
RangeIndex: 20000 entries, 0 to 19999
Columns: 785 entries, 0 to 784
dtypes: int64(785)
memory usage: 119.8 MB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">datasam</span><span class="o">.</span><span class="n">var</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">datasam</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">-</span><span class="n">datasam</span><span class="o">.</span><span class="n">var</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#导入数据，让我们使用digit recognizor数据来一展身手</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;digit recognizor.csv&quot;</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>label</th>
      <th>pixel0</th>
      <th>pixel1</th>
      <th>pixel2</th>
      <th>pixel3</th>
      <th>pixel4</th>
      <th>pixel5</th>
      <th>pixel6</th>
      <th>pixel7</th>
      <th>pixel8</th>
      <th>...</th>
      <th>pixel774</th>
      <th>pixel775</th>
      <th>pixel776</th>
      <th>pixel777</th>
      <th>pixel778</th>
      <th>pixel779</th>
      <th>pixel780</th>
      <th>pixel781</th>
      <th>pixel782</th>
      <th>pixel783</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 785 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
<span class="n">X</span><span class="o">.</span><span class="n">shape</span>


<span class="c1"># &quot;&quot;&quot;</span>
<span class="c1"># 这个数据量相对夸张，如果使用支持向量机和神经网络，很可能会直接跑不出来。使用KNN跑一次大概需要半个小时。</span>
<span class="c1"># 用这个数据举例，能更够体现特征工程的重要性。</span>
<span class="c1"># &quot;&quot;&quot;</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 784)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="1-Filter&#36807;&#28388;&#27861;">1 Filter&#36807;&#28388;&#27861;<a class="anchor-link" href="#1-Filter&#36807;&#28388;&#27861;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="VarianceThreshold">VarianceThreshold<a class="anchor-link" href="#VarianceThreshold">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">VarianceThreshold</span>
<span class="n">selector</span> <span class="o">=</span> <span class="n">VarianceThreshold</span><span class="p">()</span> <span class="c1">#实例化，不填参数默认方差为0</span>
<span class="n">X_var0</span> <span class="o">=</span> <span class="n">selector</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span> <span class="c1">#获取删除不合格特征之后的新特征矩阵</span>
<span class="c1">#也可以直接写成 X = VairanceThreshold().fit_transform(X)</span>
<span class="n">X_var0</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 708)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span><span class="o">.</span><span class="n">var</span><span class="p">()</span><span class="o">.</span><span class="n">values</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       3.22760590e-01, 2.64689018e+00, 1.11085714e+00, 1.92857143e-03,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       6.09523810e-03, 5.41186213e-02, 1.28065733e+00, 5.33793150e+00,
       9.74592647e+00, 1.06219147e+01, 2.49289953e+01, 3.37671294e+01,
       3.59425660e+01, 3.49309575e+01, 3.62943342e+01, 3.27911079e+01,
       3.04237672e+01, 2.95547817e+01, 2.00568398e+01, 1.19545659e+01,
       8.60419724e+00, 2.55465685e+00, 1.60530842e+00, 9.29377602e-01,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 9.75238095e-02, 2.00238095e-02,
       8.38442376e-01, 6.23481035e-01, 9.48446647e+00, 2.93530906e+01,
       5.67872968e+01, 1.00230634e+02, 1.65873698e+02, 2.52738939e+02,
       3.76018084e+02, 5.14426094e+02, 6.50102357e+02, 7.26608631e+02,
       7.20549617e+02, 6.49594181e+02, 5.18814455e+02, 3.94092376e+02,
       2.35038093e+02, 1.14843923e+02, 5.61521180e+01, 1.70331842e+01,
       6.48083740e+00, 1.08821717e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 4.76236337e-01, 2.75489198e-01,
       1.29297595e+00, 1.26446724e+01, 4.28153306e+01, 9.43924926e+01,
       2.15866693e+02, 4.40079141e+02, 7.26679321e+02, 1.10776068e+03,
       1.49073923e+03, 1.93993499e+03, 2.31552090e+03, 2.59022407e+03,
       2.49637882e+03, 2.22627799e+03, 1.80800104e+03, 1.31417708e+03,
       7.95887557e+02, 4.41320506e+02, 1.99165391e+02, 7.95865424e+01,
       3.10264989e+01, 2.26837146e+00, 3.48595238e-01, 0.00000000e+00,
       0.00000000e+00, 3.43809524e-02, 1.15447633e-01, 1.25289059e+00,
       1.15530325e+01, 6.16749834e+01, 1.71059884e+02, 4.37266473e+02,
       9.14503323e+02, 1.61733281e+03, 2.58238559e+03, 3.73319320e+03,
       4.97101576e+03, 6.18285701e+03, 7.12176198e+03, 7.61902605e+03,
       7.35140128e+03, 6.59732933e+03, 5.42159265e+03, 4.14622275e+03,
       2.74210919e+03, 1.60716526e+03, 8.30092375e+02, 3.85524893e+02,
       1.44471061e+02, 2.98361218e+01, 5.45472846e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 7.16499590e-01, 5.19710545e+00,
       6.12264995e+01, 2.53650903e+02, 6.51218510e+02, 1.32512948e+03,
       2.39625599e+03, 3.90432573e+03, 5.65248822e+03, 7.50750831e+03,
       9.28013155e+03, 1.07098605e+04, 1.15505424e+04, 1.18353399e+04,
       1.16728383e+04, 1.10553420e+04, 9.77051209e+03, 8.00603359e+03,
       5.90601149e+03, 3.83759619e+03, 2.22900745e+03, 1.15756773e+03,
       5.07963705e+02, 1.22007799e+02, 1.78286793e+01, 7.71428571e-03,
       0.00000000e+00, 3.80952381e-04, 2.37199928e+00, 3.95713081e+01,
       2.07427935e+02, 6.06480056e+02, 1.37944393e+03, 2.64652318e+03,
       4.39063213e+03, 6.55335113e+03, 8.64850053e+03, 1.03924767e+04,
       1.16602029e+04, 1.23720092e+04, 1.25944602e+04, 1.26223718e+04,
       1.26261428e+04, 1.25617677e+04, 1.20570623e+04, 1.07029270e+04,
       8.66359114e+03, 6.04366459e+03, 3.77715738e+03, 2.05026195e+03,
       9.47173606e+02, 3.04430342e+02, 5.49548377e+01, 3.50648111e+00,
       0.00000000e+00, 1.47595606e+00, 1.73365714e+01, 1.03708159e+02,
       4.49220215e+02, 1.11598051e+03, 2.31261700e+03, 4.05981199e+03,
       6.27112094e+03, 8.61258120e+03, 1.04088978e+04, 1.15863594e+04,
       1.20861191e+04, 1.22313676e+04, 1.22256615e+04, 1.21230025e+04,
       1.21304108e+04, 1.22345097e+04, 1.22810693e+04, 1.17587829e+04,
       1.01382911e+04, 7.63237251e+03, 4.91736987e+03, 2.72324144e+03,
       1.22087326e+03, 4.16952121e+02, 7.84619988e+01, 2.69471891e+00,
       6.68809524e-02, 1.14742637e+01, 7.06094700e+01, 2.58579123e+02,
       7.58812237e+02, 1.66236697e+03, 3.16372296e+03, 5.28061009e+03,
       7.80859675e+03, 1.00912727e+04, 1.16171690e+04, 1.22797788e+04,
       1.23833077e+04, 1.24581779e+04, 1.23866060e+04, 1.23021558e+04,
       1.22796752e+04, 1.23185424e+04, 1.24370140e+04, 1.21441547e+04,
       1.08800641e+04, 8.45510124e+03, 5.53590659e+03, 2.92299426e+03,
       1.27293575e+03, 4.39632397e+02, 7.77464211e+01, 2.35152706e+00,
       1.41387108e+00, 1.83873300e+01, 1.01219976e+02, 3.59094119e+02,
       9.16376867e+02, 1.90547923e+03, 3.64144404e+03, 6.06890402e+03,
       8.86696591e+03, 1.10299773e+04, 1.21997003e+04, 1.24677668e+04,
       1.23878202e+04, 1.20816759e+04, 1.18414911e+04, 1.18243379e+04,
       1.19196049e+04, 1.22058487e+04, 1.24040782e+04, 1.21013351e+04,
       1.08905421e+04, 8.53288188e+03, 5.50599673e+03, 2.77180472e+03,
       1.06085951e+03, 3.12689774e+02, 5.19949129e+01, 5.02228364e+00,
       3.12121001e+00, 1.92336286e+01, 1.00196288e+02, 3.33760276e+02,
       8.42723536e+02, 1.87713749e+03, 3.80614513e+03, 6.46513903e+03,
       9.41022768e+03, 1.14543460e+04, 1.22494028e+04, 1.22551059e+04,
       1.15972630e+04, 1.07756156e+04, 1.05723907e+04, 1.10540147e+04,
       1.14904415e+04, 1.20641837e+04, 1.22340857e+04, 1.19219747e+04,
       1.04672465e+04, 8.02282693e+03, 5.11996418e+03, 2.49340573e+03,
       8.29185839e+02, 2.02728469e+02, 3.65252982e+01, 4.73545802e+00,
       6.54689762e-01, 1.10762921e+01, 8.21810900e+01, 2.45993138e+02,
       6.88037918e+02, 1.77097595e+03, 3.89510214e+03, 6.82414020e+03,
       9.88524752e+03, 1.16866740e+04, 1.22052249e+04, 1.18503310e+04,
       1.08057141e+04, 1.00029368e+04, 1.05613005e+04, 1.13459087e+04,
       1.16813954e+04, 1.21153444e+04, 1.22013911e+04, 1.16257849e+04,
       9.77524122e+03, 7.24039730e+03, 4.72965127e+03, 2.39611574e+03,
       7.37971166e+02, 1.05994299e+02, 2.09059137e+01, 7.86044778e-01,
       6.32595238e-01, 6.32770971e+00, 4.96597411e+01, 1.73335928e+02,
       5.64355135e+02, 1.79246896e+03, 4.19852946e+03, 7.42330328e+03,
       1.03680620e+04, 1.19241275e+04, 1.22167302e+04, 1.17312041e+04,
       1.08331969e+04, 1.06956425e+04, 1.18765965e+04, 1.23125550e+04,
       1.21036991e+04, 1.23648277e+04, 1.23532159e+04, 1.12659827e+04,
       9.01309194e+03, 6.65304923e+03, 4.53230600e+03, 2.53236771e+03,
       8.13317532e+02, 7.57360821e+01, 1.22663918e+01, 9.49856083e-01,
       2.43809524e-02, 2.05312854e+00, 2.37737153e+01, 1.15295050e+02,
       5.23151198e+02, 2.00356402e+03, 4.71208413e+03, 8.02210576e+03,
       1.07142826e+04, 1.19844734e+04, 1.21443066e+04, 1.17352672e+04,
       1.13501890e+04, 1.18058310e+04, 1.29305253e+04, 1.24664835e+04,
       1.21090771e+04, 1.25723716e+04, 1.24760936e+04, 1.09595385e+04,
       8.66572810e+03, 6.56048630e+03, 4.59945505e+03, 2.74090145e+03,
       9.79975029e+02, 1.02467830e+02, 1.16955902e+01, 2.92035599e+00,
       0.00000000e+00, 8.53042930e-01, 8.80331299e+00, 7.52414185e+01,
       5.33884018e+02, 2.30333924e+03, 5.22384299e+03, 8.41596660e+03,
       1.08537671e+04, 1.19270178e+04, 1.19856397e+04, 1.17039418e+04,
       1.16715555e+04, 1.24445986e+04, 1.29618550e+04, 1.20230391e+04,
       1.20377425e+04, 1.26434659e+04, 1.24012680e+04, 1.08759560e+04,
       8.87523588e+03, 6.85569402e+03, 4.84378377e+03, 2.91796192e+03,
       1.10844668e+03, 1.39672375e+02, 8.86639995e+00, 7.94981734e-02,
       0.00000000e+00, 0.00000000e+00, 4.63950502e+00, 8.33393904e+01,
       6.29744755e+02, 2.69185746e+03, 5.62185375e+03, 8.53435292e+03,
       1.06354679e+04, 1.16397177e+04, 1.17410232e+04, 1.17248709e+04,
       1.20446633e+04, 1.27114555e+04, 1.27125078e+04, 1.20008852e+04,
       1.24098689e+04, 1.26745406e+04, 1.20741286e+04, 1.08898533e+04,
       9.21323231e+03, 7.22598679e+03, 5.04689745e+03, 2.90913735e+03,
       1.12277645e+03, 1.91078386e+02, 2.57469149e+01, 1.29179123e+00,
       0.00000000e+00, 7.69744852e-02, 1.03197870e+01, 1.11053766e+02,
       8.11564748e+02, 3.07386387e+03, 5.91065656e+03, 8.36008213e+03,
       1.01408287e+04, 1.10632136e+04, 1.12910607e+04, 1.14976813e+04,
       1.20735231e+04, 1.27502876e+04, 1.26987222e+04, 1.23901805e+04,
       1.26170244e+04, 1.23916950e+04, 1.17483338e+04, 1.09217037e+04,
       9.48760960e+03, 7.35171522e+03, 5.01095743e+03, 2.72992609e+03,
       1.04916705e+03, 2.25941630e+02, 3.05993271e+01, 2.87316363e+00,
       0.00000000e+00, 2.28039253e-01, 1.74352649e+01, 1.69998742e+02,
       1.10767541e+03, 3.43926495e+03, 6.05208363e+03, 8.08344097e+03,
       9.50906305e+03, 1.03073030e+04, 1.06715518e+04, 1.10973680e+04,
       1.17642567e+04, 1.22940460e+04, 1.25222837e+04, 1.24838281e+04,
       1.23538616e+04, 1.20985659e+04, 1.17177753e+04, 1.10570877e+04,
       9.47381642e+03, 7.19094489e+03, 4.63491474e+03, 2.42432309e+03,
       9.17534777e+02, 2.34119338e+02, 3.27687618e+01, 1.59861539e+00,
       1.47639388e-01, 4.47934602e-01, 2.76028871e+01, 2.71942488e+02,
       1.45371251e+03, 3.83133451e+03, 6.28631187e+03, 8.14612790e+03,
       9.30917203e+03, 1.00179199e+04, 1.05639229e+04, 1.09925571e+04,
       1.13187529e+04, 1.19116163e+04, 1.23480093e+04, 1.23440430e+04,
       1.21692394e+04, 1.21290528e+04, 1.19460348e+04, 1.11011974e+04,
       9.19667530e+03, 6.71976236e+03, 4.18683656e+03, 2.12415117e+03,
       8.18965786e+02, 2.22857925e+02, 2.54140760e+01, 1.36995713e+00,
       0.00000000e+00, 1.81578450e+00, 4.96345920e+01, 3.80903626e+02,
       1.68403918e+03, 4.10905800e+03, 6.66129020e+03, 8.56235623e+03,
       9.76878976e+03, 1.05714566e+04, 1.11195093e+04, 1.14535438e+04,
       1.17907581e+04, 1.21204054e+04, 1.24479360e+04, 1.23900112e+04,
       1.22489975e+04, 1.23606302e+04, 1.19785927e+04, 1.06491638e+04,
       8.49640625e+03, 5.95805507e+03, 3.53263357e+03, 1.70287256e+03,
       6.43673157e+02, 1.79133677e+02, 2.84028991e+01, 6.28175963e-01,
       0.00000000e+00, 1.23625493e+00, 5.65580767e+01, 4.36617659e+02,
       1.67611596e+03, 3.91825583e+03, 6.61848502e+03, 8.93197399e+03,
       1.05084494e+04, 1.14328933e+04, 1.19110401e+04, 1.21686631e+04,
       1.23576844e+04, 1.24269771e+04, 1.24145723e+04, 1.24011494e+04,
       1.23905027e+04, 1.22793811e+04, 1.14389559e+04, 9.61909799e+03,
       7.11272858e+03, 4.61189510e+03, 2.55069845e+03, 1.22448673e+03,
       4.85654757e+02, 1.30709778e+02, 1.54997227e+01, 5.95238095e-02,
       2.43809524e-02, 5.50986923e-01, 4.58334020e+01, 3.50464999e+02,
       1.27200240e+03, 3.19694301e+03, 5.84711073e+03, 8.57024623e+03,
       1.06775424e+04, 1.19000918e+04, 1.23555360e+04, 1.24402093e+04,
       1.23586522e+04, 1.21992581e+04, 1.22280936e+04, 1.23162507e+04,
       1.22510127e+04, 1.16314635e+04, 1.00849238e+04, 7.71018098e+03,
       5.16732671e+03, 2.99318809e+03, 1.58471510e+03, 7.70678750e+02,
       2.90603130e+02, 7.36919311e+01, 9.81920114e+00, 3.62142857e-02,
       2.28809524e-02, 2.76185941e-03, 2.81056704e+01, 2.04208025e+02,
       7.29051694e+02, 2.00572701e+03, 4.21366647e+03, 6.92346357e+03,
       9.57389827e+03, 1.14603398e+04, 1.24666788e+04, 1.27682484e+04,
       1.26613017e+04, 1.25534327e+04, 1.25998206e+04, 1.23927837e+04,
       1.15590439e+04, 9.88953142e+03, 7.53295513e+03, 5.11441259e+03,
       3.05547189e+03, 1.66092585e+03, 8.39969863e+02, 3.84512312e+02,
       1.34737119e+02, 2.71408189e+01, 3.06857624e+00, 1.23428571e-01,
       0.00000000e+00, 0.00000000e+00, 7.31084788e+00, 7.57570670e+01,
       3.18535551e+02, 8.92561149e+02, 2.13007164e+03, 4.15513729e+03,
       6.67943441e+03, 9.08942045e+03, 1.08768840e+04, 1.18600478e+04,
       1.22185140e+04, 1.21488922e+04, 1.16761724e+04, 1.06623427e+04,
       8.88180421e+03, 6.72867491e+03, 4.52696553e+03, 2.78125867e+03,
       1.57340674e+03, 7.99627345e+02, 3.90776811e+02, 1.74143994e+02,
       5.13083781e+01, 8.53411049e+00, 1.14082626e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 3.09874806e+00, 2.12014616e+01,
       9.01086432e+01, 2.89578069e+02, 7.37002996e+02, 1.63305438e+03,
       3.00614325e+03, 4.75217719e+03, 6.42418657e+03, 7.68266614e+03,
       8.23705320e+03, 8.21603450e+03, 7.48615583e+03, 6.25364040e+03,
       4.88502834e+03, 3.50985901e+03, 2.25424437e+03, 1.40076179e+03,
       7.54457368e+02, 3.85015891e+02, 1.70931569e+02, 7.23728862e+01,
       1.53588609e+01, 3.76286683e+00, 2.36378952e-01, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 7.89492516e-02, 3.23002085e+00,
       2.66993369e+01, 8.62829380e+01, 2.42567552e+02, 5.74670736e+02,
       1.16062824e+03, 1.85908331e+03, 2.63430007e+03, 3.18296192e+03,
       3.47208469e+03, 3.42498298e+03, 3.04423070e+03, 2.59463417e+03,
       2.08583729e+03, 1.54170230e+03, 1.04262030e+03, 6.17155891e+02,
       3.32872699e+02, 1.63141373e+02, 6.60019146e+01, 2.49646484e+01,
       2.80197112e+00, 5.64225568e-01, 2.57523810e-01, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       5.85748256e+00, 2.32008075e+01, 9.24954784e+01, 2.19439668e+02,
       4.27698080e+02, 6.31131067e+02, 9.05773738e+02, 1.16529687e+03,
       1.28219277e+03, 1.23351933e+03, 1.09034012e+03, 8.82789099e+02,
       7.26724558e+02, 5.23459986e+02, 3.45778063e+02, 2.08353021e+02,
       1.10624593e+02, 4.18520306e+01, 1.58110107e+01, 3.40777397e+00,
       1.94759195e-02, 8.28809524e-02, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
       0.00000000e+00, 9.02126602e-01, 5.52653803e+00, 1.54785620e+01,
       2.06441456e+01, 3.43017827e+01, 5.21246770e+01, 7.97142975e+01,
       1.00081387e+02, 1.02608696e+02, 1.26673478e+02, 1.14405059e+02,
       8.98716430e+01, 6.32064973e+01, 3.98525769e+01, 2.14722761e+01,
       1.07222715e+01, 3.09714228e+00, 3.58912164e+00, 1.71614970e-01,
       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">np</span><span class="o">.</span><span class="n">median</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">var</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>1352.2867031801309</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">X_fsvar</span> <span class="o">=</span> <span class="n">VarianceThreshold</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">median</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">var</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">))</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="c1"># 只取一半的特征</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">X_fsvar</span><span class="p">)</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>1</th>
      <th>2</th>
      <th>3</th>
      <th>4</th>
      <th>5</th>
      <th>6</th>
      <th>7</th>
      <th>8</th>
      <th>9</th>
      <th>...</th>
      <th>382</th>
      <th>383</th>
      <th>384</th>
      <th>385</th>
      <th>386</th>
      <th>387</th>
      <th>388</th>
      <th>389</th>
      <th>390</th>
      <th>391</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>18</td>
      <td>30</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>6</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>25</td>
      <td>130</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 392 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_fsvar</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 392)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#26679;&#26412;&#20803;&#32032;">&#26679;&#26412;&#20803;&#32032;<a class="anchor-link" href="#&#26679;&#26412;&#20803;&#32032;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
RangeIndex: 42000 entries, 0 to 41999
Columns: 784 entries, pixel0 to pixel783
dtypes: int64(784)
memory usage: 251.2 MB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>255</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 784)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">ravel</span><span class="p">())</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{0,
 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23,
 24,
 25,
 26,
 27,
 28,
 29,
 30,
 31,
 32,
 33,
 34,
 35,
 36,
 37,
 38,
 39,
 40,
 41,
 42,
 43,
 44,
 45,
 46,
 47,
 48,
 49,
 50,
 51,
 52,
 53,
 54,
 55,
 56,
 57,
 58,
 59,
 60,
 61,
 62,
 63,
 64,
 65,
 66,
 67,
 68,
 69,
 70,
 71,
 72,
 73,
 74,
 75,
 76,
 77,
 78,
 79,
 80,
 81,
 82,
 83,
 84,
 85,
 86,
 87,
 88,
 89,
 90,
 91,
 92,
 93,
 94,
 95,
 96,
 97,
 98,
 99,
 100,
 101,
 102,
 103,
 104,
 105,
 106,
 107,
 108,
 109,
 110,
 111,
 112,
 113,
 114,
 115,
 116,
 117,
 118,
 119,
 120,
 121,
 122,
 123,
 124,
 125,
 126,
 127,
 128,
 129,
 130,
 131,
 132,
 133,
 134,
 135,
 136,
 137,
 138,
 139,
 140,
 141,
 142,
 143,
 144,
 145,
 146,
 147,
 148,
 149,
 150,
 151,
 152,
 153,
 154,
 155,
 156,
 157,
 158,
 159,
 160,
 161,
 162,
 163,
 164,
 165,
 166,
 167,
 168,
 169,
 170,
 171,
 172,
 173,
 174,
 175,
 176,
 177,
 178,
 179,
 180,
 181,
 182,
 183,
 184,
 185,
 186,
 187,
 188,
 189,
 190,
 191,
 192,
 193,
 194,
 195,
 196,
 197,
 198,
 199,
 200,
 201,
 202,
 203,
 204,
 205,
 206,
 207,
 208,
 209,
 210,
 211,
 212,
 213,
 214,
 215,
 216,
 217,
 218,
 219,
 220,
 221,
 222,
 223,
 224,
 225,
 226,
 227,
 228,
 229,
 230,
 231,
 232,
 233,
 234,
 235,
 236,
 237,
 238,
 239,
 240,
 241,
 242,
 243,
 244,
 245,
 246,
 247,
 248,
 249,
 250,
 251,
 252,
 253,
 254,
 255}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#26597;&#30475;&#27599;&#21015;&#20803;&#32032;&#30340;&#31867;&#21035;/&#27599;&#21015;&#26377;&#22810;&#23569;&#20010;&#19981;&#21516;&#20803;&#32032;">&#26597;&#30475;&#27599;&#21015;&#20803;&#32032;&#30340;&#31867;&#21035;/&#27599;&#21015;&#26377;&#22810;&#23569;&#20010;&#19981;&#21516;&#20803;&#32032;<a class="anchor-link" href="#&#26597;&#30475;&#27599;&#21015;&#20803;&#32032;&#30340;&#31867;&#21035;/&#27599;&#21015;&#26377;&#22810;&#23569;&#20010;&#19981;&#21516;&#20803;&#32032;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([1, 0, 4, 7, 3, 5, 8, 9, 2, 6])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">40</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([  0, 255,  83, 228, 195,  89, 123, 253, 186,  42,  77, 212, 234,
        60, 170,   4,  46, 244,   9, 240, 169, 208, 254, 110, 128, 167,
        21,  80,  16, 183,   1, 114,  70,  47, 171, 152, 232, 124, 130,
       190])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#26631;&#31614;">&#26631;&#31614;<a class="anchor-link" href="#&#26631;&#31614;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">LabelEncoder</span>
<span class="n">le</span> <span class="o">=</span> <span class="n">LabelEncoder</span><span class="p">()</span> <span class="c1">#实例化</span>
<span class="n">le</span> <span class="o">=</span> <span class="n">le</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="c1">#导入数据</span>
<span class="n">label</span> <span class="o">=</span> <span class="n">le</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="c1">#transform接口调取结果</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">le</span><span class="o">.</span><span class="n">classes_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">label</span><span class="p">[:</span><span class="mi">10</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([1, 0, 1, 4, 0, 0, 7, 3, 5, 3])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#若特征是伯努利随机变量，假设p=0.8，即二分类特征中某种分类占到80%以上的时候删除特征</span>
<span class="n">X_bvar</span> <span class="o">=</span> <span class="n">VarianceThreshold</span><span class="p">(</span><span class="o">.</span><span class="mi">8</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="o">.</span><span class="mi">8</span><span class="p">))</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="n">X_bvar</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 685)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#26041;&#24046;&#36807;&#28388;&#23545;&#27169;&#22411;&#30340;&#24433;&#21709;--&#36816;&#34892;&#26102;&#38388;&#22826;&#38271;">&#26041;&#24046;&#36807;&#28388;&#23545;&#27169;&#22411;&#30340;&#24433;&#21709;  &#36816;&#34892;&#26102;&#38388;&#22826;&#38271;<a class="anchor-link" href="#&#26041;&#24046;&#36807;&#28388;&#23545;&#27169;&#22411;&#30340;&#24433;&#21709;--&#36816;&#34892;&#26102;&#38388;&#22826;&#38271;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#KNN vs 随机森林在不同方差过滤效果下的对比</span>
<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span> <span class="k">as</span> <span class="n">RFC</span>
<span class="kn">from</span> <span class="nn">sklearn.neighbors</span> <span class="k">import</span> <span class="n">KNeighborsClassifier</span> <span class="k">as</span> <span class="n">KNN</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
<span class="n">X_fsvar</span> <span class="o">=</span> <span class="n">VarianceThreshold</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">median</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">var</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">))</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#======【TIME WARNING：35mins +】======#</span>
<span class="n">cross_val_score</span><span class="p">(</span><span class="n">KNN</span><span class="p">(),</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
<span class="c1">#python中的魔法命令，可以直接使用%%timeit来计算运行这个cell中的代码所需的时间</span>
<span class="c1">#为了计算所需的时间，需要将这个cell中的代码运行很多次（通常是7次）后求平均值，因此运行%%timeit的时间会远远超过cell中的代码单独运行的时间</span>
<span class="c1">#======【TIME WARNING：4 hours】======#</span>
<span class="o">%%</span><span class="k">timeit</span>
cross_val_score(KNN(),X,y,cv=5).mean()
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#======【TIME WARNING：20 mins+】======#</span>
<span class="n">cross_val_score</span><span class="p">(</span><span class="n">KNN</span><span class="p">(),</span><span class="n">X_fsvar</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
<span class="c1">#======【TIME WARNING：2 hours】======#</span>
<span class="o">%%</span><span class="k">timeit</span>
cross_val_score(KNN(),X,y,cv=5).mean()
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>谨慎处理</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9380003861799541</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="o">%%</span><span class="k">timeit</span>
cross_val_score(RFC(n_estimators=10,random_state=0),X,y,cv=5).mean()
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>1 loop, best of 3: 16.4 s per loop
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">X_fsvar</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9388098166696807</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">X_fsvar</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9617859005967446</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="2&#30456;&#20851;&#24615;&#36807;&#28388;">2&#30456;&#20851;&#24615;&#36807;&#28388;<a class="anchor-link" href="#2&#30456;&#20851;&#24615;&#36807;&#28388;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21345;&#26041;&#36807;&#28388;">&#21345;&#26041;&#36807;&#28388;<a class="anchor-link" href="#&#21345;&#26041;&#36807;&#28388;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span> <span class="k">as</span> <span class="n">RFC</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
<span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">SelectKBest</span>
<span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">chi2</span>
<span class="c1">#假设在这里我一直我需要300个特征</span>
<span class="n">X_fschi</span> <span class="o">=</span> <span class="n">SelectKBest</span><span class="p">(</span><span class="n">chi2</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_fsvar</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="n">X_fschi</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 300)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">X_fschi</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9333098667649198</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#======【TIME WARNING: 5 mins】======#</span>
<span class="o">%</span><span class="k">matplotlib</span> inline
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">score</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">390</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="o">-</span><span class="mi">10</span><span class="p">):</span>
    <span class="n">X_fschi</span> <span class="o">=</span> <span class="n">SelectKBest</span><span class="p">(</span><span class="n">chi2</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_fsvar</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
    <span class="n">once</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">X_fschi</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">score</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">once</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">390</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="o">-</span><span class="mi">10</span><span class="p">),</span><span class="n">score</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
TkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">chivalue</span><span class="p">,</span> <span class="n">pvalues_chi</span> <span class="o">=</span> <span class="n">chi2</span><span class="p">(</span><span class="n">X_fsvar</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">chivalue</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ 945664.84392643, 1244766.05139164, 1554872.30384525,
       1834161.78305343, 1903618.94085294, 1845226.62427198,
       1602117.23307537,  708535.17489837,  974050.20513718,
       1188092.19961931, 1319151.43467036, 1397847.8836796 ,
       1433554.26798015, 1429043.15373433, 1332663.17213405,
       1101423.25372261,  809989.56940485,  519266.71772284,
        285681.88297156,  191589.23696468,  902883.1255264 ,
       1237265.16042373, 1503477.73699155, 1625807.41495542,
       1630206.90922916, 1630597.02883804, 1633456.72909664,
       1610816.75571229, 1483382.49543886, 1256290.1574794 ,
        951236.1617682 ,  693192.66191748,  532386.96220361,
        504617.38933715,  575090.36046243,  501025.03733245,
        802341.10683194, 1078344.8724406 , 1226540.98318702,
       1269945.07968831, 1221758.57688808, 1146535.17810241,
       1080657.20185303, 1079065.30979135, 1092222.70610032,
       1064908.45385716, 1023327.00231067,  974163.15420165,
        918857.12860617,  861439.52030749,  828439.23565047,
        916454.89464771,  989713.58229958,  543695.5016699 ,
        674691.76755044,  708113.57226969,  657819.3908855 ,
        599159.21961671,  576483.60795847,  559848.1818137 ,
        536985.56062372,  561457.57734769,  594428.19185935,
        592414.89830452,  587801.84097643,  672232.60135169,
        790511.70530618,  866573.70991777,  891422.58050934,
        905163.15191882, 1006322.94034634,  585209.83598254,
        699596.88963547,  705326.82387203,  641105.0929774 ,
        632098.97938142,  725189.43548604,  853879.48154986,
        863895.50862873,  709440.99808713,  615099.361498  ,
        660082.35138802,  662040.13166049,  647432.43321103,
        718070.06251003,  868119.93550552,  995128.78948214,
        981295.46383871,  888906.74357254,  803951.63399892,
        775220.92445238,  802661.20360682,  806753.10120013,
        827660.8911231 , 1008184.76195542, 1212658.65697336,
       1279652.35847441, 1071947.51866571,  712579.55021262,
        708178.91784269,  931871.22430817,  836155.03350401,
        781584.17446604,  883252.58134165, 1015304.18853993,
       1153480.28062008, 1235182.10720641, 1110286.29490637,
        762412.0228271 ,  651475.7374445 ,  659784.45490334,
        761439.40964843,  980458.35707785, 1285689.5977369 ,
       1412800.83270279, 1269424.03486304,  844394.53343881,
        453037.70035635,  906205.5333485 , 1314337.38985735,
        875502.64893107,  848574.25317153, 1088364.70535319,
       1143964.61799576, 1231934.57606489, 1525266.11466634,
       1624923.27849511, 1120921.66905394,  381196.04594987,
        517011.13080559,  840830.08443577, 1249668.53527256,
       1487299.06201808, 1440993.69232521, 1234157.54433962,
        891091.32709079,  767327.74644144, 1767505.95851489,
       1794612.36340341,  843649.64862696,  974860.15688277,
       1282142.9789604 , 1121437.99502364, 1158258.4373389 ,
       1803319.16430163, 2247538.01212782, 1715860.1009172 ,
        308268.96279553,  670765.24199637, 1175840.18589306,
       1569563.41213805, 1615071.70298461, 1453812.39367812,
       1429193.59276003, 1469624.15320088, 1610038.8334007 ,
       2381990.83018419, 1684641.44646863,  781514.82471784,
       1136274.26981954, 1258505.95202954,  900621.20914746,
       1033026.39393914, 2032592.30559197, 2688297.40292302,
       2126052.31008566,  477854.94097719, 1061876.2951535 ,
       1617721.02614334, 1859303.87013649, 1706658.49975169,
       1442798.15960511, 1497467.99791583, 1635633.52918659,
       1789954.0440811 , 2042036.97897042, 1243975.13567915,
        847897.40531407, 1334491.44036763, 1146547.23628072,
        721408.29456933, 1099901.34212844, 2234797.26301007,
       2788060.61506624, 2097404.45292914,  770825.17396301,
       1509971.18325275, 2008828.59327289, 2076128.28182046,
       1775258.41727455, 1374882.05100453, 1223860.78474695,
       1190499.55493678, 1469994.89713294, 1556218.16894472,
        936604.6211571 , 1052799.96220046, 1487484.96092392,
       1096221.91497984,  754081.7574313 , 1308952.47883141,
       2269151.28497174, 2519422.4441161 , 1816912.55593098,
       1090497.85622876, 1822356.78804369, 2192372.5304657 ,
       2133745.04961112, 1807649.67676254, 1420349.92183107,
       1222343.35267926, 1165504.99607627, 1500572.78318498,
       1432663.59271325,  890862.82928644, 1274280.76943075,
       1432072.36165076,  956997.59590817,  888742.14373383,
       1508163.46238821, 2117988.12236915, 2054465.38907916,
       1423918.25987689, 1286013.85962749, 1972608.25057539,
       2179634.12755044, 1979740.23184782, 1717723.16781811,
       1552275.10457858, 1461315.1411536 , 1494620.94971976,
       1739520.65681857, 1442815.46046628, 1014723.34171191,
       1363794.15539944, 1122747.63831017,  739634.35332833,
       1067567.31929299, 1667592.5097389 , 1864455.97854722,
       1579099.16973703,  967688.45447601, 1416605.83453248,
       2062165.61891584, 2170645.77302745, 1901786.79198259,
       1733725.85760386, 1753508.37671084, 1712712.42549789,
       1733493.582237  , 1770340.59820148, 1310901.04423274,
       1008023.90988477, 1061378.72275934,  662457.8217003 ,
        729648.40292041, 1370253.32454603, 1741943.51510473,
       1593454.39731162, 1172442.70958932,  671601.50140396,
        511587.36577997, 1454955.01309647, 2126817.74478926,
       2263953.8025206 , 2028172.33782053, 1992515.52928071,
       2172520.74824953, 2035403.53821729, 1758624.07224114,
       1514817.58748747, 1002116.10560135,  669379.60246184,
        544978.32282227,  576722.03477821, 1098371.32650041,
       1603057.05343338, 1612844.96289426, 1293107.69776289,
        917550.19379029,  683222.7639966 ,  608782.99701169,
       1391473.37940334, 2082151.30610954, 2298916.31712188,
       2140360.89085296, 2070900.53848134, 2159471.16950063,
       1981772.43302263, 1521754.51234479, 1076334.48566226,
        610262.09016783,  351852.98340462,  461487.7601437 ,
        878540.35993713, 1337597.14727232, 1481891.62067955,
       1342562.57238699, 1127940.79389167,  958491.4694589 ,
        884951.02023249,  671520.41386273, 1232265.31295026,
       1877169.85821324, 2239501.99047448, 2199634.11766741,
       1930471.52367226, 1666073.70450191, 1364054.30645472,
       1000936.25390226,  656080.48075838,  389810.08772878,
        340150.21186292,  602275.43941511,  959623.37641551,
       1156974.48558905, 1135816.98677808, 1044294.97185606,
        992281.03054232,  964376.78121192,  966024.75721634,
       1491250.50567589, 1970679.86657318, 2139321.52912066,
       1894361.40873889, 1368494.5514217 ,  829396.07488768,
        488455.25931088,  331978.08818759,  293365.6522867 ,
        387474.16211622,  600489.80555106,  783767.50733716,
        831013.99296771,  768407.80393857,  738760.56078587,
        761413.22072658,  781528.79224194,  615612.72460389,
        975765.83585216, 1382346.6477236 , 1684701.13053512,
       1732335.2436048 , 1492804.58962318, 1144230.23099215,
        852589.97157847,  719215.03719448,  675891.53891187,
        687917.5152402 ,  708292.70911948,  673810.32849758,
        550803.45299243,  428370.7943997 ,  384587.47807058,
        407022.00975206,  441201.32284902,  661202.45504685,
        904150.80474087, 1098249.34334037, 1225055.2730661 ,
       1312843.88397644, 1325774.40817926, 1236093.76813092,
       1036608.01098297,  829620.55626671,  654964.88596563,
        520032.72156302,  387948.22204601,  273436.39846809,
        203015.85080751,  255471.93956392,  389884.80778864,
        561308.92316732,  759511.94695328,  942402.80700557,
       1044698.95132913, 1009807.32615993,  844407.23356341,
        695110.21243546,  637789.62877943,  600582.89899187,
        519392.9652949 ,  399631.65341907, 1006027.89058975,
       1352052.90333271, 1647606.90721159, 1761733.4081397 ,
       1664096.76785043, 1396834.58681766, 1159784.3628775 ,
       1001178.01359166,  847886.28143964])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pvalues_chi</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0.])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">chivalue</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>392</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#k取多少？我们想要消除所有p值大于设定值，比如0.05或0.01的特征：</span>
<span class="n">k</span> <span class="o">=</span> <span class="n">chivalue</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="p">(</span><span class="n">pvalues_chi</span> <span class="o">&gt;</span> <span class="mf">0.05</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">k</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>392</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#X_fschi = SelectKBest(chi2, k=填写具体的k).fit_transform(X_fsvar, y)</span>
<span class="c1">#cross_val_score(RFC(n_estimators=10,random_state=0),X_fschi,y,cv=5).mean()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="F&#26816;&#39564;">F&#26816;&#39564;<a class="anchor-link" href="#F&#26816;&#39564;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>需要注意的是，F检验在数据服从正态分布时效果会非常稳定，因此如果使用F检验过滤，我
们会先将数据转换成服从正态分布的方式</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">f_classif</span>
<span class="n">F</span><span class="p">,</span> <span class="n">pvalues_f</span> <span class="o">=</span> <span class="n">f_classif</span><span class="p">(</span><span class="n">X_fsvar</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">F</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ 618.65383492,  846.18897012, 1115.40617051, 1362.3677305 ,
       1452.03355369, 1381.09095571, 1138.26505266,  464.29616121,
        660.00977785,  849.66393412, 1004.7450309 , 1124.76177588,
       1200.99190762, 1209.29489877, 1110.4944286 ,  854.66183292,
        577.52063451,  342.09729054,  178.67397866,  118.01145533,
        612.12261014,  899.40904291, 1196.17528948, 1424.49864852,
       1569.26556677, 1742.49910702, 1910.98023795, 1969.20520223,
       1731.37475948, 1295.09668012,  839.15325001,  531.97951763,
        371.82392681,  336.00820537,  378.93378743,  317.47025479,
        528.94881012,  766.40792176,  947.63168717, 1086.0472161 ,
       1177.72017709, 1253.79641973, 1344.06961068, 1507.33781169,
       1616.50454434, 1512.25864876, 1289.65180587, 1051.26276412,
        839.48869386,  680.07426932,  600.85538567,  633.55772663,
        683.96908509,  347.65867784,  452.76238211,  509.16387684,
        515.7498157 ,  532.86107778,  594.62512658,  664.18740444,
        709.37133696,  798.11767931,  876.69849088,  852.76926441,
        785.70173347,  802.88980095,  813.2041131 ,  760.85552527,
        687.94148028,  642.84071735,  698.11530217,  367.16414289,
        455.90449427,  485.50500277,  476.23046034,  536.72332365,
        740.12587382, 1041.38089649, 1168.8028973 ,  941.91083922,
        795.72843454,  861.29818828,  868.19464432,  838.80173567,
        886.26659655,  959.12740961,  934.56890789,  783.1988476 ,
        631.01107034,  542.02937189,  493.83337615,  533.27899195,
        572.34131749,  657.20547321,  981.66873526, 1465.82267956,
       1756.05831022, 1385.28086085,  798.73125604,  761.40508874,
       1062.6919609 ,  979.38193965,  947.82602644, 1085.00522683,
       1152.13801689, 1118.1595422 , 1021.13086631,  812.37823266,
        509.86857625,  411.37986706,  430.7150329 ,  545.55866945,
        829.92259533, 1376.4852629 , 1811.62922878, 1601.33613631,
        898.8719158 ,  417.37765921,  895.77244253, 1455.38592931,
        956.2421521 ,  990.1748413 , 1359.47406197, 1279.27992017,
       1166.80888121, 1291.41792351, 1263.86987819,  787.81807986,
        237.21811742,  333.12552194,  621.47324186, 1139.04489426,
       1713.54508435, 1823.42451065, 1436.53069242,  884.19442779,
        717.63373994, 2026.90370414, 2219.46450157,  943.55587655,
       1217.29127813, 1677.03878308, 1193.63540136, 1039.56842784,
       1570.18098323, 1878.5600272 , 1284.78903715,  190.02740438,
        444.17019739,  928.80156872, 1562.54171587, 1940.54801063,
       1816.57346013, 1683.83193784, 1619.17496376, 1865.78706551,
       3482.82350415, 2326.10253286,  990.67999393, 1632.46650414,
       1652.51500198,  891.26746579,  883.96689508, 1805.57103626,
       2389.97435433, 1630.34926872,  301.84091297,  746.3286491 ,
       1394.82469151, 2008.19411716, 2107.3680475 , 1767.97892382,
       1786.08753011, 1980.1986791 , 2509.14739387, 3366.13986444,
       1959.90573326, 1299.36608875, 2218.28123025, 1470.25657381,
        681.02610086,  937.54741741, 2037.45812231, 2518.68810085,
       1583.0009463 ,  509.76276636, 1139.21364745, 1881.71834116,
       2351.30851824, 2175.48525458, 1624.49647062, 1399.44534221,
       1440.98664744, 2229.25720739, 2764.00452882, 1633.74258116,
       1870.29253742, 2628.79930504, 1367.31440177,  707.38857243,
       1150.06936228, 2089.08213594, 2185.00557858, 1318.14722036,
        747.37697661, 1453.94015412, 2116.40726513, 2399.53090598,
       2143.53519978, 1651.89817908, 1414.71662551, 1481.62100314,
       2468.21266727, 2666.18025642, 1520.6400065 , 2223.14029953,
       2271.07109628, 1111.06997494,  844.31183874, 1388.60413626,
       1917.10207189, 1667.61400215,  996.09054823,  907.80926355,
       1607.70263546, 2085.21461056, 2073.68356276, 1880.26929744,
       1756.40165025, 1716.45478479, 1964.08537105, 2796.13761562,
       2413.09378391, 1543.01310963, 2118.10377396, 1475.29541488,
        783.59003763, 1040.65400476, 1582.46200024, 1617.32566033,
       1188.24554305,  642.2665701 , 1011.30241064, 1725.70185142,
       2067.20755476, 1893.35116837, 1795.96538455, 1922.58627318,
       1951.69309645, 2115.44871238, 2479.27958039, 1809.12095649,
       1330.8686207 , 1396.29767244,  741.9063402 ,  751.14036409,
       1410.18529816, 1677.6595494 , 1308.77910167,  836.77047561,
        430.93133677,  313.888671  , 1039.31894918, 1811.68171256,
       2191.69964967, 2035.63638826, 2114.65218363, 2511.27142071,
       2363.46743373, 2053.7687027 , 1865.84769096, 1202.94179711,
        793.61414555,  633.71267282,  636.18282736, 1218.61245591,
       1712.62901816, 1484.60290068,  996.06129466,  626.13659134,
        441.56356583,  374.08815796,  983.21640593, 1764.93014215,
       2264.93587233, 2262.87269162, 2323.50890468, 2611.66920897,
       2387.45723028, 1763.5696083 , 1256.32165954,  704.77285945,
        406.94580935,  548.06969664, 1051.50016486, 1542.11172909,
       1494.38472469, 1130.61174365,  823.84437277,  650.69506052,
        594.18011033,  415.73313115,  853.97575783, 1548.7167469 ,
       2204.00694989, 2444.69535795, 2267.62871155, 2003.69161124,
       1643.94961527, 1202.35520102,  804.18805494,  483.32932365,
        420.99263006,  750.06949525, 1136.32227345, 1202.49476981,
        990.75097727,  791.03016258,  692.46641159,  653.96372577,
        647.90433225, 1149.80460733, 1826.54973661, 2361.75564926,
       2313.09139096, 1694.26613916, 1012.97938867,  608.4174945 ,
        432.07115684,  383.54620406,  487.70312805,  698.78061024,
        797.0763827 ,  714.70722998,  574.2849126 ,  507.5143557 ,
        508.77434021,  510.36884435,  404.13860698,  686.31274396,
       1103.81003251, 1590.83695172, 1912.74984902, 1832.62220523,
       1482.39046946, 1142.10827805,  968.65089356,  860.24853405,
        780.75215696,  696.78170045,  567.41403081,  403.59649375,
        284.91007929,  245.59060983,  255.97458001,  293.6787996 ,
        460.46868009,  687.29383613,  940.06512113, 1205.58777055,
       1485.37178744, 1623.12886955, 1488.04856361, 1119.91615126,
        770.06544455,  530.6398126 ,  376.66549502,  258.05875548,
        172.20323661,  123.79865884,  160.44132806,  249.15104257,
        374.15221131,  544.73535425,  727.78945347,  853.98680046,
        819.19801306,  656.55547718,  510.87851723,  445.09613969,
        401.25608847,  333.48574029,  243.88699402,  645.9545719 ,
        920.3259526 , 1196.07900013, 1308.12260763, 1218.37705687,
        996.41501921,  792.59409228,  663.47516843,  550.14745143])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pvalues_f</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 4.71193533e-220,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       3.26083326e-322, 5.24336441e-231, 4.04009647e-300, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">k</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="p">(</span><span class="n">pvalues_f</span> <span class="o">&gt;</span> <span class="mf">0.05</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">k</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>392</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#X_fsF = SelectKBest(f_classif, k=填写具体的k).fit_transform(X_fsvar, y)</span>
<span class="c1">#cross_val_score(RFC(n_estimators=10,random_state=0),X_fsF,y,cv=5).mean()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20114;&#20449;&#24687;&#27861;">&#20114;&#20449;&#24687;&#27861;<a class="anchor-link" href="#&#20114;&#20449;&#24687;&#27861;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>返回“每个特征与目标之间的互信息量的估计”，这个估计量在[0,1]之间取值，为0则表示两个变量独立，为1则表示两个变量完全相关</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">mutual_info_classif</span> <span class="k">as</span> <span class="n">MIC</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">MIC</span><span class="p">(</span><span class="n">X_fsvar</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
<span class="n">k</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="nb">sum</span><span class="p">(</span><span class="n">result</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">k</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>392</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#X_fsmic = SelectKBest(MIC, k=填写具体的k).fit_transform(X_fsvar, y)</span>
<span class="c1">#cross_val_score(RFC(n_estimators=10,random_state=0),X_fsmic,y,cv=5).mean()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="3Embedded&#23884;&#20837;&#27861;">3Embedded&#23884;&#20837;&#27861;<a class="anchor-link" href="#3Embedded&#23884;&#20837;&#27861;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">SelectFromModel</span>
<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span> <span class="k">as</span> <span class="n">RFC</span>
<span class="n">RFC_</span> <span class="o">=</span> <span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span> <span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">X_embedded</span> <span class="o">=</span> <span class="n">SelectFromModel</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">threshold</span><span class="o">=</span><span class="mf">0.005</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
<span class="c1">#在这里我只想取出来有限的特征。0.005这个阈值对于有780个特征的数据来说，是非常高的阈值，因为平均每个特征只能够分到大约0.001的feature_importances_</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_embedded</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 47)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#模型的维度明显被降低了</span>
<span class="c1">#同样的，我们也可以画学习曲线来找最佳阈值</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">threshold</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0.        , 0.00067177, 0.00134354, 0.00201531, 0.00268707,
       0.00335884, 0.00403061, 0.00470238, 0.00537415, 0.00604592,
       0.00671769, 0.00738945, 0.00806122, 0.00873299, 0.00940476,
       0.01007653, 0.0107483 , 0.01142007, 0.01209183, 0.0127636 ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#======【TIME WARNING：10 mins】======#</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">RFC_</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">feature_importances_</span>
<span class="n">threshold</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,(</span><span class="n">RFC_</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">feature_importances_</span><span class="p">)</span><span class="o">.</span><span class="n">max</span><span class="p">(),</span><span class="mi">20</span><span class="p">)</span>
<span class="n">score</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">threshold</span><span class="p">:</span>
    <span class="n">X_embedded</span> <span class="o">=</span> <span class="n">SelectFromModel</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">threshold</span><span class="o">=</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
    <span class="n">once</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">X_embedded</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">score</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">once</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">threshold</span><span class="p">,</span><span class="n">score</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
gg==
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_embedded</span> <span class="o">=</span> <span class="n">SelectFromModel</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">threshold</span><span class="o">=</span><span class="mf">0.00067</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
<span class="n">X_embedded</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 324)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">X_embedded</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.939905083368037</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#======【TIME WARNING：10 mins】======#</span>
<span class="n">score2</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.00134</span><span class="p">,</span><span class="mi">20</span><span class="p">):</span>
    <span class="n">X_embedded</span> <span class="o">=</span> <span class="n">SelectFromModel</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">threshold</span><span class="o">=</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
    <span class="n">once</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">X_embedded</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">score2</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">once</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.00134</span><span class="p">,</span><span class="mi">20</span><span class="p">),</span><span class="n">score2</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xticks</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.00134</span><span class="p">,</span><span class="mi">20</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo
dHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4VPeZ9vHvGfUugTqSQPXQezW9
g8E22Ma9xCXV2c3Gb9puyibZbHo2u0mcxHGJu42xAWNjAza99yrgIAkJIYGEEEK9zsz7h7CDHdsI
kHQ0o/tzXbkizZw5534sMZp55lcMt9uNiIiIiIiIiIiIw+4AIiIiIiIiIiLSNahRJCIiIiIiIiIi
gBpFIiIiIiIiIiJyiRpFIiIiIiIiIiICqFEkIiIiIiIiIiKXqFEkIiIiIiIiIiIA+Nod4POUlVW7
7c7QXqKigqmoqLM7RrvzxrpUk+fwxrq8sSbwzrpUk+fwxrq8sSbwzrpUk+fwxrq8sSbwzrpUk+fw
lrpiYsKMz7qvTY0i0zR/D4wF3MA3LMvafdl9twA/ABqB1yzL+tNl9wUBR4D/sizruUu3/SvwOyDK
sqyaq67GQ/n6+tgdoUN4Y12qyXN4Y13eWBN4Z12qyXN4Y13eWBN4Z12qyXN4Y13eWBN4Z12qyXN4
a12Xu+LUM9M0JwOZlmWNAx4B/nDZfQ7gT8CNwCTgJtM0ky57+A+AC5cd/wAQB5xpl/QiIiIiIiIi
ItJu2rJG0XRgOYBlWceAKNM0wy/dFw1ctCyrzLIsF7AWmAFgmmZfoD+w8rJzLbMs6/u0jkwSERER
EREREZEupC2Nonig7LLvyy7d9uHXYaZpZpqm6QdMpXXEELROL3v88hNZllV9fXFFRERERERERKSj
XMti1h8teGRZlts0zQeBZ4FKIB8wLk0x225ZVr5pmtccLioq2Kvm/8XEhNkdoUN4Y12qyXN4Y13e
WBN4Z12qyXN4Y13eWBN4Z12qyXN4Y13eWBN4Z12qyXN4a10fakuj6Az/GEEEkAic/fAby7I2AhMB
TNP8BVAALATSTNOcDyQBjaZpFlmW9cHVhPOGlcQ/FBMTRlmZ9w2o8sa6VJPn8Ma6vLEm8M66VJPn
8Ma6vLEm8M66VJPn8Ma6vLEm8M66VJPn8Ja6Pq/Z1ZZG0RrgJ8CTpmkOB85cPoXMNM33gAeBWuAm
4HeWZb122f0/BgqutkkkIiIiIiIiIiKd64prFFmWtQ3Ya5rmNlp3PHvMNM0vmKa58NIhT9HaTNoC
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
AAAASUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_embedded</span> <span class="o">=</span> <span class="n">SelectFromModel</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">threshold</span><span class="o">=</span><span class="mf">0.000564</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
<span class="n">X_embedded</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(42000, 340)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">X_embedded</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9408335415056387</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#=====【TIME WARNING：2 min】=====#</span>
<span class="c1">#我们可能已经找到了现有模型下的最佳结果，如果我们调整一下随机森林的参数呢？</span>
<span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">X_embedded</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.960309871378534</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="4Wrapper&#21253;&#35013;&#27861;">4Wrapper&#21253;&#35013;&#27861;<a class="anchor-link" href="#4Wrapper&#21253;&#35013;&#27861;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="k">import</span> <span class="n">RFE</span>
<span class="n">RFC_</span> <span class="o">=</span> <span class="n">RFC</span><span class="p">(</span><span class="n">n_estimators</span> <span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">selector</span> <span class="o">=</span> <span class="n">RFE</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span> <span class="n">n_features_to_select</span><span class="o">=</span><span class="mi">340</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">selector</span><span class="o">.</span><span class="n">support_</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>340</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">selector</span><span class="o">.</span><span class="n">ranking_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([10,  9,  8,  7,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
        6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  7,  7,  6,  6,
        5,  6,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  7,  6,  7,  7,
        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  6,  6,  5,  4,
        4,  5,  3,  4,  4,  4,  5,  4,  5,  7,  6,  7,  7,  7,  8,  8,  8,
        8,  8,  8,  8,  8,  6,  7,  4,  3,  1,  2,  3,  3,  1,  1,  1,  1,
        1,  3,  3,  4,  5,  5,  5,  8,  8,  9,  9,  9,  9,  8,  9,  9,  4,
        4,  3,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  3,  4,
        5,  5,  9,  9, 10, 10, 10, 10,  7,  4,  4,  3,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  3,  5,  8, 10, 10, 10,
       10,  9,  4,  4,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  3,  4, 10, 10, 10, 10,  9,  7,  4,  3,  2,  2,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,
        4,  4, 10,  9, 10,  6,  6,  4,  2,  3,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  5,  9, 10,  8,  7,
        4,  5,  3,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  2,  1,  2,  4, 10, 10, 10,  9,  7,  5,  3,  3,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  5,
        5,  9,  9,  9,  7,  5,  5,  3,  2,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  2,  4,  5,  9,  9,  9,  9,  9,  5,
        4,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  4,  5,  7, 10, 10,  9, 10,  9,  4,  1,  2,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  5, 10,
        9, 10, 10,  9,  7,  4,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  2,  2,  4,  8,  9, 10, 10, 10,  5,  4,
        2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  2,  3,  5, 10, 10, 10, 10,  9,  5,  4,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  4,  5,  9,
       10, 10, 10,  5,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  3,  3,  4,  8,  8, 10, 10,  9,  5,  3,  3,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,
        3,  3,  4, 10, 10, 10, 10,  8,  4,  3,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  4,  5,  8, 10, 10,
       10, 10,  5,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  2,  4,  7, 10, 10, 10, 10,  8,  5,  3,  2,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  3,
        5,  5,  7,  9,  9,  9,  9,  5,  5,  2,  2,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  2,  2,  2,  3,  4,  5,  5,  8,  9,  9,  9,
        9,  7,  4,  4,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
        3,  3,  3,  5,  5,  9,  8,  9,  9,  9,  9,  9,  5,  4,  4,  2,  2,
        1,  1,  1,  1,  1,  2,  1,  1,  1,  1,  2,  2,  3,  4,  5,  5,  9,
        8,  8,  8,  8,  8,  8,  7,  8,  6,  4,  2,  2,  1,  1,  2,  2,  1,
        2,  2,  3,  2,  2,  4,  4,  5,  5,  8,  8,  8,  7,  7,  7,  7,  7,
        7,  7,  5,  5,  4,  5,  4,  3,  3,  3,  4,  3,  3,  4,  3,  4,  5,
        5,  6,  7,  7,  7,  6,  7,  8,  8,  8,  9,  9,  9,  9,  6,  8,  8,
        8,  7,  8,  8,  8,  7,  8,  8,  8,  8,  8,  7,  8,  8,  8,  8,  9,
       10,  7])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_wrapper</span> <span class="o">=</span> <span class="n">selector</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">X_wrapper</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9389522459432109</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#======【TIME WARNING: 15 mins】======#</span>
<span class="n">score</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">751</span><span class="p">,</span><span class="mi">50</span><span class="p">):</span>
    <span class="n">X_wrapper</span> <span class="o">=</span> <span class="n">RFE</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">n_features_to_select</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
    <span class="n">once</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">RFC_</span><span class="p">,</span><span class="n">X_wrapper</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">score</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">once</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">751</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="n">score</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xticks</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">751</span><span class="p">,</span><span class="mi">50</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
    </div>
  </div>
</body>

 


</html>
